Makefile 错误:尝试安装犰狳时使用-fpic重新编译

Makefile 错误:尝试安装犰狳时使用-fpic重新编译,makefile,installation,cmake,ubuntu-14.04,armadillo,Makefile,Installation,Cmake,Ubuntu 14.04,Armadillo,我试图在我的Ubuntu 14.04中安装Armadillo。 我在终端中犰狳文件所在的文件夹中运行cmake.命令,然后运行make命令。我犯了以下错误 /usr/bin/ld: /usr/local/lib/libsuperlu.a(util.c.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC /usr/local/l

我试图在我的Ubuntu 14.04中安装Armadillo。
我在终端中犰狳文件所在的文件夹中运行
cmake.
命令,然后运行
make
命令。我犯了以下错误

/usr/bin/ld: /usr/local/lib/libsuperlu.a(util.c.o): relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; 
recompile with -fPIC
/usr/local/lib/libsuperlu.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [libarmadillo.so.7.800.1] Error 1
make[1]: *** [CMakeFiles/armadillo.dir/all] Error 2
make: *** [all] Error 2

我怎样才能纠正这个问题

您系统上位于
/usr/local/lib/libsuperlu.a
的库很可能不是使用
-fPIC
构建的,您可能正在尝试构建一个共享库,该库使用
libsuperlu.a
中的代码。如果这是您的情况,那么编译器会告诉您,
libsuperlu.a
中的代码不可重定位,但您的共享库需要它。您需要构建自己的
libsuperlu.a
,并确保其所有目标文件都使用
-fPIC
标志编译,由于您当前在
/usr/local/lib
中安装的
libsuperlu.a
对您不起作用。

sudo apt get install libarmadillo dev从发行版获取正确构建的二进制软件包有什么问题?@DirkEddelbuettel,我正在尝试安装一个更新的版本。apt get中的SuperLu和犰狳非常古老,犰狳版本无法识别旧的SuperLu版本,即使这样,你也可以做得比下载和构建更糟糕。或者甚至采取行动。