kann nicht verwendet werden, wenn ein gemeinsames Objekt; recompile with-fPIC
Habe ich versucht zu installieren, eine Bibliothek, aber ich habe folgende Fehlermeldung nach dem ausführen von make. Wie kompilieren mit dem flag?
machen Scanning dependencies of target pwrutils Linking CXX geteilt
Bibliothek libpwrutils.also /usr/bin/ld:
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_system.ein(error_code.o):
Umzug R_X86_64_32 gegen `.rodata.str1.1' kann nicht verwendet werden, wenn
machen ein gemeinsames Objekt; recompile with-fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu/libboost_system.a:
Fehler beim hinzufügen des symbols: Bad value collect2: Fehler: ld zurückgegeben, 1 Ausgang
status make[2]: * [libpwrutils/libpwrutils.so.1.0] Fehler 1 make[1]:
* [libpwrutils/CMakeFiles/pwrutils.dir/all] Fehler 2 make: *** [all] Fehler 2
- Sind Sie mit CMake? Tun Sie, wie
cmake .
oder ähnlich und dannmake
oder Sie müssen nur ein Makefile und rufen Siemake
? - ja, ich bin mit Cmake. Ich habe versucht, zu löschen CMakeCache.txt und cmake erneut, aber es half nicht natürlich.
- Sie versucht, den link gemeinsames - Bibliothek
libpwrutils.so
gegen static - Bibliotheklibboost_system.a
. Und das funktioniert nicht. Sie sollten entweder die Installation gemeinsamer Boost-library, oder bauen Sie Ihre Bibliothek (libpwrutils.so
) als STATISCH. BTW, Fragen beschreibt ähnliches problem. - Mögliche Duplikate von Shared library auf Linux und -fPIC-Fehler
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erweitern Sie den compiler-flags innerhalb der großen CMakeLists.txt als erforderlich.
Löschen Sie den cache erneut. Cmake und überprüfen Sie mit ccmake oder cmake-gui, ob CMAKE_BUILD_TYPE ist nicht leer, sondern ein Debug, Release, etc.