最近我将我的armadillo更新到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: error: ld returned 1 exit status
make: *** [a];out]错误1
这个错误出现在我安装Ubuntu 14.04LTS + gcc 4.9.2的机器上。Armadillo本身链接到OpenBLAS 0.2.14(我在安装过程中遵循了Armadillo提供的过程)
这样的错误不会发生在我的macosx笔记本电脑(相同的库)。这意味着我的ubuntu机器有问题。我试图重新安装Armadillo 4.650.2(这个版本以前工作),但同样的错误不断出现(现在旧的不像以前那样工作)。在更新这些库之前,我做的唯一一件事是"apt-self update"one_answers"apt-self upgrade"我的ubuntu机器
有什么建议来解决这个问题吗?我也在Ubuntu Linux上使用armadillo
当我开始用armadillo编程时,我第一次遇到了同样的问题。对于g++,我只需要添加-larmadillo
作为命令行选项。例如
g++ -O2 -o armadillo_example armadillo_example.cpp -larmadillo