我正在尝试使用 libnuma 编译一个简单的测试程序(仅调用 numa_available),并且我得到了此函数的未定义引用错误。
起初,我使用 apt-get 来安装 libnuma-dev,然后简单地使用 gcc -lnuma -o test test.c 来编译测试程序。 这导致了"numa_available
的未定义参考"。 然后,我使用 dpkg -L libnuma-dev 来确保实际安装了 lib(并确保我使用字符串来检查接口是否已更改或其他内容 - 我知道,这种方法是废话,但是库中有一些"numa_available"字符串,所以我认为假设接口没有更改是相当安全的)
然后我也尝试了 -l:/usr/lib/x86_64-linux-gnu/libnuma.so 和 -L/usr/lib/x86。GNU,但是这总是导致未定义的引用错误。
最后,我尝试静态链接它(简单地说是 gcc -lnuma ....test.c/usr/lib../libnuma.a) 幸运的是它现在可以工作了... 但是,谁能告诉我为什么它不能动态链接工作?
此致敬意
从您的链接命令来看("gcc -lnuma ....test.c/usr/lib../libnuma.a"),最可能的原因是您需要将-lnuma
移动到test.c
之后。--as-need 标志在现代发行版中默认启用,除非前面的对象引用了它,否则不会在库中链接。