Frage

Ich versuche Python 2.6 für bauen Qgis an Rhel 5. Während der Herstellung von QGIS erhalte ich den folgenden Fehler:

Linking CXX shared library libqgispython.so
/usr/bin/ld: /usr/local/lib/python2.6/config/libpython2.6.a(abstract.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/python2.6/config/libpython2.6.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [src/python/libqgispython.so.1.0] Error 1
make[1]: *** [src/python/CMakeFiles/qgispython.dir/all] Error 2
make: *** [all] Error 2

Was ich aus diesem Fehler heraus finde, ist, dass ich Python 2.6 mit etwas Flagge erstellen muss, -fPIC. Ok, also habe ich es in der gefunden configure.in Datei, aber es überprüft mehrere Bedingungen und auf der Grundlage der von ihnen zugewiesenen Bedingungen -fPIC zum CCSHARED Flagge.

Was ich tat, war, dass ich nach allen Bedingungen überprüft worden war, dass ich die folgende Zeile hinzugefügt habe, um absichtlich zu verwenden CCSHARED wie -fPIC.

CCSHARED="-fPIC";

Aber es hat nicht funktioniert..

So geben Sie beim Konfigurieren fest, dass ich festlegen möchte CCSHARED wie -fPIC?

War es hilfreich?

Lösung

Ausführen konfigurieren mit --enable-shared. Dann -fPIC wird als Teil der gemeinsam genutzten Flaggen aufgenommen.

Andere Tipps

Das Folgende funktionierte für mich, als ich auf diesen Fehler stieß:

make clean
./configure CFLAGS=-fPIC CXXFLAGS=-fPIC

Ich habe es zum Laufen gebracht, indem ich hinzugefügt wird -fPIC nach CC= gcc -pthread, dh CC= gcc -pthread -fPIC im Makefile.

  1. Laufen ./configure --help, möglicherweise zu grep pic, um festzustellen, ob es eine Option gibt, um dies zu aktivieren
  2. Versuchen Sie, die Umgebungsvariable vor dem Ausführen von Konfiguration festzulegen, z. B. ccshared = "-fpic" ./configure (als einzelner Befehl unter Annahme von Bash)

Wenn keiner dieser Funktionen funktionieren, müssen Sie den Konfigurationscode lesen und die Bedingungen verstehen, die es besser testet.

Wie an anderer Stelle erwähnt, sollte das Ausführen von Konfigurieren mit -ABABLE -SHARDE -FPIC in den Compiler -Flags dazu führen. Möglicherweise sehen Sie jedoch immer noch, dass der Fehler "Symbole nicht lesen konnten", wenn Sie versuchen, einen parallele Build mithilfe von "make -j8" durchzuführen. Ich hatte den gleichen Fehler bei RHEL 5.2 und es ging nur weg, als ich das '-J8' von meiner Make-Berufung entfernte ...

Ist das nicht? CCFLAGS? (Ich war eine Weile nicht diese Seite der Welt.)

OpenSSL mit ./config -prefix =/Software/Bea/OpenSSL/100C -openenssldir =/Software/Bea/OpenSSL/100C/SSL Shared -fpic bauen

Und dann funktioniert es auch nicht. Es gab/usr/bin/ld: Links sind fehlgeschlagen. Das Wir modifizierte das Verknüpfungsteil in der Datei make -Datei zuvor gcc -wall -shared -o pwutil.so asciihex.o Basis64.o bitutils.o dict.o gen_rand.o key_Schedule.o md5c.o pdg2_ecb.o pwutils.o random_dataa .o hexutils.o des3crypt.o blowcrypt.o /software/bea/opensl/1.0.0c/lib/libcrypto.a

Wir haben libcrypto.a in libcrypto geändert.

GCC -Wall -shared -o pwutil.so asciihex.o base64.o bitutils.o dict.o gen_rand.o key_schspledule.o md5c.o pdg2_ecb.o pwutils.o random_data.o hexutils.o Des3crypt.o blowcrypt.o / Software/Bea/OpenSSL/1.0.0c/lib/libcrypto.so

und es hat funktioniert

Folgendes hat eine Beispiel von FPIC zu konfigurieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top