【发布时间】:2013-06-06 11:06:08
【问题描述】:
我正在尝试为 jni 调用构建一个共享库。我在构建时使用 -shared 开关创建了一个静态库。我现在需要构建一个依赖于这个静态库的共享库。我在构建共享库时尝试使用 -l 。构建失败,说我从静态库中包含的头文件不可用。我到底应该怎么做?
【问题讨论】:
标签: gcc java-native-interface shared-libraries
我正在尝试为 jni 调用构建一个共享库。我在构建时使用 -shared 开关创建了一个静态库。我现在需要构建一个依赖于这个静态库的共享库。我在构建共享库时尝试使用 -l 。构建失败,说我从静态库中包含的头文件不可用。我到底应该怎么做?
【问题讨论】:
标签: gcc java-native-interface shared-libraries
将-I/path/to/static/library/headers添加到CFLAGS,将-L/path/to/static/library添加到LDFLAGS,它将不再抱怨。
【讨论】:
CFLAGS,而不是将它们用作您唯一的CFLAGS。此外,混合源/头文件也可以。而且,GCC 不会触及您的文件夹结构。而且,当你编译这些东西时,你应该在每个文件上使用gcc -c -fPIC 来生成目标文件,然后使用gcc -shared 将它们链接在一起以形成最终的共享库。