gpt4 book ai didi

c - 如何使用 JNI/JNA 可以使用的 automake 创建共享库 (dylib)?

转载 作者:太空宇宙 更新时间:2023-11-03 23:53:28 24 4
gpt4 key购买 nike

我如何说服 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 找到库但找不到入口点。

我阅读了“How to create a shared library (.so) in an automake script?”线程,它帮助了很多。我使用 -shared 标志创建了 dylib(根据生成的 Makefile)。但是,当我尝试从 Java Native Access 使用它时,出现“未找到符号”错误。

查看由 Makefile 生成的 libclique.la 它似乎没有任何关键信息,只是看起来是链接重载和为了后续 C 的方便而移动的东西/C++ 编译器步骤(我没有),所以我希望 libclique.1.dylib 是一个正常运行的动态库。

我猜这就是我出错的地方,但是,考虑到 JNA 直接链接到 dylib 并且没有用它编译(根据上面引用的讨论中的示例),似乎所有后续编译步骤LibTools 手册中描述的内容没有实际意义。

注意:我正在 Mac 上进行测试,但我还必须在 Windows 和 Linux 机器上进行测试,这就是我尝试将其放入 Automake 的原因。

注意 2:我使用 Eclipse 进行 Java 开发,是的,我确实导入了 dylib。

谢谢

最佳答案

你应该是building a plugin尤其是通过

libclique_la_LDFLAGS = -avoid-version -module -shared -export-dynamic

通过这种方式,您可以告诉 libtool 您需要一个可动态加载的模块而不是一个共享库(这对于 ELF 是一样的,但对于 Mach-O 则不是。)

关于c - 如何使用 JNI/JNA 可以使用的 automake 创建共享库 (dylib)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14203717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com