gpt4 book ai didi

linux - 创建.so文件

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

有一组带有 - 扩展名为.с 的文件:avl_tree.c、buf_read.c、db_prep.c、file_process.c、global_header.c、traverser.c。使用的包含文件在文件夹/usr/gcc/4.4/bin/include 中,jni.h 除外,库在文件夹/usr/gcc/4.4/bin/lib 中。如何从他们那里创建 .so 文件(如果可能的话,在此命令中指定所有选项)?我对通过 JNI 方法创建 native 方法进行通信很感兴趣。

最佳答案

您真的应该阅读 GCC 的文档。特别是 invoking GCC . program library howto也是相关的。

很多时候,一些构建器被用来驱动构建。 GNU make经常使用并且有很好的教程文档。如果您的 Makefile-s 很复杂,您可能还想使用 GNU remake调试它们(remakemake 的调试变体)。

您通常希望将每个单独的 C 源文件编译成 position independent code因为shared objects有PIC码。你可以使用

 gcc -Wall -fPIC -o foo.pic.o foo.c

将 C 源代码 foo.c 编译成位置独立的目标文件 foo.pic.o 并且您可能需要一些其他编译器选项(例如 - I添加include目录,或者-D定义一些预处理器符号,-g用于调试,-O用于优化).

我强烈建议使用 -Wall 启用几乎所有警告(并改进您的代码,直到没有给出警告为止;这会稍微提高您的代码质量)。

然后你必须将所有这些 *.pic.o 文件链接到一个共享对象中

 gcc -shared *.pic.o -o foo.so

您可以将一些共享库链接到一个共享对象中。

您可能想阅读 Levine's book on linkers and loaders

当然,如果您使用 GNU make,您将在 Makefile 中为所有这些设置规则。

你可以使用 GNU libtool还有。

也许 dlopen(3)您可能会感兴趣。

关于linux - 创建.so文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12995277/

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