我需要编译,最重要的是,链接一个 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/