【问题标题】:Error: recompile with -fpic when try to install Armadillo错误:尝试安装 Armadillo 时使用 -fpic 重新编译
【发布时间】:2017-03-18 05:28:52
【问题描述】:

我试图在我的 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

我该如何纠正这个问题?

【问题讨论】:

  • sudo apt-get install libarmadillo-dev 从发行版中获取正确构建的二进制包有什么问题?
  • @DirkEddelbuettel,我正在尝试安装更新的版本。 apt-get 中的 SuperLu 和犰狳相当老,犰狳版本不识别旧的 superLu 版本
  • 即便如此,您也可以做很多比下载sources of the current package 并构建它。或者甚至采取the Debian sources

标签: makefile installation cmake ubuntu-14.04 armadillo


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2018-10-04
    • 2015-01-18
    • 2013-08-25
    • 2016-04-25
    • 2018-05-14
    相关资源
    最近更新 更多