对libnuma的未定义引用

时间:2017-04-15 12:18:02

标签: gcc compiler-errors shared-libraries numa

我正在尝试用libnuma编译一个简单的测试程序(只调用numa_available),我得到了一个未定义的参考错误。

首先,我使用apt-get安装libnuma-dev,然后简单地使用gcc -lnuma -o test test.c来编译测试程序。 这导致'numa_available'的未定义引用。 然后,我使用dpkg -L libnuma-dev来确保实际安装了lib(并且确保我使用字符串来检查接口是否已经改变了什么 - 我知道,这个方法是垃圾,但是有一些“ numa_available“lib中的字符串,所以我认为假设接口没有改变是相当安全的”

然后我也尝试了-l:/usr/lib/x86_64-linux-gnu/libnuma.so和-L / usr / lib / x86..gnu,但这总是导致未定义的引用错误。

最后,我尝试静态链接它(简单地说是gcc -lnuma .... test.c /usr/lib../libnuma.a),幸运的是它现在正常工作...... 但是,任何人都可以告诉我为什么它不能动态链接?

最好的问候

1 个答案:

答案 0 :(得分:3)

从您的链接命令(" gcc -lnuma .... test.c /usr/lib../libnuma.a")判断,最可能的原因是您需要移动{{ 1}}到-lnuma之后。默认情况下,--as-needed flag在现代发行版中处于启用状态,除非前面的对象引用它,否则不会在库中链接。