链接错误:Armadillo 库中的“未定义对‘pthread_atfork’的引用”

Posted

技术标签:

【中文标题】链接错误:Armadillo 库中的“未定义对‘pthread_atfork’的引用”【英文标题】:linking error: "undefined reference to `pthread_atfork'" in Armadillo library 【发布时间】:2015-06-02 15:20:16 【问题描述】:

最近我将犰狳更新到版本 5.200.1,但是当我尝试使用编译我的代码时

g++ -std=c++11 -m64 -O3 -Wall -I. -I/opt/OpenBLAS/include -fopenmp -o code.cpp.o -c code.cpp
g++ -std=c++11 -m64 -O3 -Wall -I. -I/opt/OpenBLAS/include -fopenmp -o main.cpp.o -c main.cpp
g++ -std=c++11 -m64 -O3 -o code.cpp.o main.cpp.o -lgomp -L/opt/OpenBLAS/lib -lopenblas -larmadillo

我在最后的链接步骤中收到错误消息

/usr/lib/gcc/x86_64-linux-gnu/4.9/../../../../lib/libarmadillo.so: 对“pthread_atfork”的未定义引用

collect2:错误:ld 返回 1 个退出状态

make: *** [a.out] 错误 1

这个错误出现在我使用 Ubuntu 14.04LTS + gcc 4.9.2 的机器上。 犰狳本身与 OpenBLAS 0.2.14 链接(我按照犰狳提供的程序安装)

我的 macosx 笔记本电脑(同一个库)不会发生此类错误。这意味着我的 ubuntu 机器有问题。我试图重新安装犰狳 4.650.2(这个版本以前工作过),但同样的错误不断出现(现在旧的不能像以前那样工作)。在更新这些库之前我唯一做的就是我的 ubuntu 机器的“apt-self update”和“apt-self upgrade”

有什么建议可以解决这个问题吗?

【问题讨论】:

【参考方案1】:

我也在 Ubuntu Linux 上使用犰狳

当我开始使用犰狳编程时,我首先遇到了同样的问题。对于 g++,我只需要添加 -larmadillo 作为命令行选项。比如这个

g++ -O2 -o armadillo_example armadillo_example.cpp -larmadillo

【讨论】:

以上是关于链接错误:Armadillo 库中的“未定义对‘pthread_atfork’的引用”的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用 Armadillo 库运行示例时出现 Xcode C++ 链接器错误

链接器错误、Xcode 5 和 Armadillo:“找不到 -larmadillo.4.0.2 的库”

c ++犰狳库中的sort_index()函数给出错误的结果

在编译/链接期间无法禁用 Armadillo Wrapper

Armadillo / Xcode:“仅返回类型不同的函数不能被重载”错误无处不在

在python中使用链接库中的方法时出现属性错误