2017-03-18 1 views
1

Ich habe versucht, Armadillo in meinem Ubuntu 14.04 zu installieren.
Ich führe cmake . Befehl im Terminal in dem Ordner, wo die Armadillo-Dateien befinden und dann make Befehl ausführen. Ich habe folgende Fehler bekommen.Fehler: kompilieren mit -fpic, wenn versuchen, Armadillo zu installieren

/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 

Wie kann ich das beheben?

+0

Was ist los mit 'sudo apt-get installieren libarmadillo-dev', um das richtig gebaute Binärpaket aus der Distribution zu bekommen? –

+0

@DirkEddelbuettel, ich habe versucht, eine neuere Version zu installieren. SuperLu und Gürteltier in apt-get ist ziemlich alt und die Gürteltier-Version erkennt nicht alte superLu Version – hisham

+0

Selbst dann könnten Sie _much_ schlimmer als das Herunterladen der [Quellen des aktuellen Pakets] (http://packages.ubuntu.com/ yakkety/libarmadillo-dev) und das bauen. Oder nehmen Sie [die Debian-Quellen] (https://packages.debian.org/sid/libarmadillo-dev). –

Antwort

3

Die Bibliothek /usr/local/lib/libsuperlu.a auf Ihrem System wurde höchstwahrscheinlich nicht mit -fPIC gebaut und Sie versuchen, vermutlich eine gemeinsame Bibliothek zu erstellen, den Code von libsuperlu.a verwendet. Wenn dies Ihre Situation ist, sagt Ihnen der Compiler, dass der Code in libsuperlu.a nicht verschiebbar ist, aber Ihre gemeinsame Bibliothek benötigt es. Sie müssen Ihre eigene libsuperlu.a erstellen und sicherstellen, dass alle seine Objektdateien mit dem Flag kompiliert werden, da die libsuperlu.a, die Sie derzeit in /usr/local/lib installiert haben, nicht für Sie arbeiten wird.

Verwandte Themen