如何说服 LibTools 生成与 gcc 自动执行的库相同的库?
如果我明确地做事,这会起作用:
gcc -o libclique.dylib -shared disc.c phylip.c Slist.c clique.c
cp libclique.dylib [JavaTestDir]/libclique.dylib
但如果我这样做:
Makefile libclique.la (which is what automake generates)
cp .libs/libclique.1.dylib [JavaTestDir]/libclique.dylib
Java 找到库但找不到入口点。
我阅读了“如何在 automake 脚本中创建共享库 (.so)?” 线程,它有很大帮助。我得到了使用 -shared 标志创建的 dylib(根据生成的 Makefile)。但是当我尝试从 Java Native Access 中使用它时,我得到一个“找不到符号”错误。
查看libclique.la
Makefile 生成的内容,它似乎没有任何关键信息,只是看起来是链接重载和移动内容以方便后续 C/C++ 编译器步骤(我没有),所以我希望libclique.1.dylib
成为一个正常运行的动态库。
我猜这就是我出错的地方,但是,鉴于 JNA 直接链接到一个 dylib 并且没有用它编译(根据上面引用的讨论中的示例),似乎所有后续编译步骤都在LibTools 手册没有实际意义。
注意:我在 Mac 上进行测试,但我也必须在 Windows 和 Linux 机器上执行此操作,这就是我尝试将其放入 Automake 的原因。
注意 2:我使用 Eclipse 进行 Java 开发,是的,我确实导入了 dylib。
谢谢