我试图用libnuma编译一个简单的测试程序(仅调用numa_available),但此函数出现 undefined reference 错误。

首先,我使用apt-get安装libnuma-dev,然后简单地使用gcc -lnuma -o test test.c编译测试程序。
这导致“对numa_available的引用未定义”。
然后,我使用dpkg -L libnuma-dev来确保确实安装了lib(并且确保使用了字符串来检查接口(interface)是否已更改或进行了某些更改-我知道,此方法是废话,但是有些“lib中的“numa_available”字符串,因此我认为假设接口(interface)未更改是相当安全的)

然后,我还尝试了-l:/usr/lib/x86_64-linux-gnu/libnuma.so和-L/usr/lib/x86..gnu,但这总是导致 undefined reference 错误。

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

最好的祝福

最佳答案

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

关于gcc - 对libnuma的 undefined reference ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43425975/

10-12 20:41