c - 在 Linux 上使用 gcc 链接共享库

标签 c linux gcc linker shared-libraries

我需要编译,最重要的是,链接一个 C 程序,该程序使用共享库文件中的专有 function。由于与之前的开发团队缺乏沟通,所以没有合适的文档。我声明了一个函数原型(prototype)(因为我知道参数的数量和类型):

int CustomFunction(unsigned char *in, int size);

因为可以从 /customlibs/libcustom.so 中获取该函数名称,所以我尝试编译代码并像这样链接它:

gcc -L/customlibs testing.c -o testing -lcustom

它会抛出一些如下所示的错误消息:

/customlibs/libcustom.so: undefined reference to `AnotherCustomFunction'

显然,我需要告诉链接器也包含其他库,而且更糟糕的是,它们需要按特定顺序排列。我尝试导出 LD_LIBRARY_PATH,使用 -Wl,-rpath=-Wl,--no-undefined-Wl,- -开始组。有没有一种简单的方法可以在没有正确顺序的情况下为链接器提供所有 .so 文件?

最佳答案

我找到了我的问题的解决方案(或解决方法):添加 -Wl,--warn-unresolved-symbols,这会将错误变成警告。请注意,只有当您绝对确定您的函数不依赖于 undefined reference to: 消息中提到的符号时,这才有效。

关于c - 在 Linux 上使用 gcc 链接共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43082816/

相关文章:

c - 添加动态变量时 C 列表的堆栈溢出

php - 快照启动后 : Informix Client -23101/Oracle instant client -28759

python 在 linux 上使用 os.system 传递参数

c++ - 链接C++程序时出错

c - 我正在学习 C 并且我制作了一个简单的程序。它不起作用,我需要一个答案

c - 如何直接与硬件交互?

c - 服务器认为2个不同IP的客户端是同一个客户端(C Socket编程)

linux - 用于查找 && mkdir 的 Bash 脚本

c - 如何处理 C 中的多级包含?

C gcc 预期为 '=' 、 ',' 、 ';' 、 'asm' 或 '_attribute__' 之前