链接错误: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