在Linux上将共享库与gcc链接起来

时间:2017-03-29 01:43:49

标签: c linux gcc linker shared-libraries

我需要编译,最重要的是,链接使用共享库文件中存在的专有C的{​​{1}}程序。由于缺乏与先前开发团队的沟通,因此没有适当的文档。我声明了一个函数原型(因为我知道参数的数量和类型):

function

由于该函数名称可以从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,--start-group文件?

3 个答案:

答案 0 :(得分:0)

在命令行上添加它们是一种方法。这样的事情如下。 LD_LIBRARY_PATH告诉gcc在哪里查找库,但是你仍然需要说明要包含哪些库。

gcc -L / customlibs testing.c -o testing -lcustom -lmylib1 -lmylib2 -lmylib3

答案 1 :(得分:0)

您还应该通过添加gcc的-I选项来包含共享库的所有头文件,例如:gcc [...] -I/path/to/your/lib/header/files [...]

答案 2 :(得分:0)

我找到了解决问题的方法(或解决方法):添加-Wl,--warn-unresolved-symbols,将错误转换为警告。请注意,仅当您绝对确定您的功能不依赖于undefined refernce to:消息中提到的符号时,此功能才有效。