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