2017-03-18 21 views
1

私はUbuntu 14.04にArmadilloをインストールしようとしていました。
Armadilloファイルがあるフォルダのターミナルでcmake .コマンドを実行し、makeコマンドを実行します。私は次のエラーを受け取りました。エラー:Armadilloをインストールしようとすると-fpicで再コンパイルされます

/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 

これをどのように修正できますか?

+0

ディストリビューションから適切にビルドされたバイナリパッケージを取得するには 'sudo apt-get install libarmadillo-dev'とは何が問題になりますか? –

+0

@DirkEddelbuettel、私は新しいバージョンをインストールしようとしていました。 apt-getのSuperLuとarmadilloはかなり古いですし、armadilloのバージョンは古いsuperLuのバージョンを認識しません – hisham

+0

それでもあなたは[現在のパッケージのソース](http://packages.ubuntu.com/)をダウンロードするよりもずっと悪くなりますyakkety/libarmadillo-dev)とそのビルド。あるいは、[Debianのソース](https://packages.debian.org/sid/libarmadillo-dev)を利用してください。 –

答えて

3

ご使用のシステムの/usr/local/lib/libsuperlu.aのライブラリは-fPICで構築されていない可能性があり、おそらくlibsuperlu.aのコードを使用する共有ライブラリを構築しようとしています。これがあなたの状況ならば、コンパイラはlibsuperlu.aのコードは再配置可能ではないが、あなたの共有ライブラリはそれを必要としていることを伝えています。あなた自身でlibsuperlu.aを構築し、すべてのオブジェクトファイルが-fPICフラグでコンパイルされていることを確認する必要があります。に現在インストールされているlibsuperlu.aは機能しません。

関連する問題