Heim >Backend-Entwicklung >C++ >Warum erhalte ich die Fehlermeldung „Die Verschiebung von R_ARM_MOVW_ABS_NC gegen „ein lokales Symbol' kann beim Erstellen eines gemeinsam genutzten Objekts nicht verwendet werden'?
Neukompilierung mit -fPIC-Flag für ARM-Ubuntu-Maschine
Beim Neuaufbau von FFmpeg auf einer ARM-Ubuntu-Maschine kann der Fehler auftreten:
relocation R_ARM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
Dieser Fehler weist darauf hin, dass das System versucht, eine statische Bibliothek mit einer dynamischen Bibliothek zu verknüpfen, die nicht kompatibel ist. Um dieses Problem zu beheben, ist es notwendig, die problematische Bibliothek, wie z. B. FFmpeg, mit dem Flag -fPIC neu zu kompilieren.
Neukompilierungsprozess
Die folgenden Schritte können unternommen werden Kompilieren Sie eine Bibliothek mit dem Flag -fPIC neu:
Spezifisches Beispiel für FFmpeg
Für FFmpeg kann der folgende Befehl verwendet werden, um es mit dem neu zu kompilieren -fPIC-Flag:
./configure --enable-shared --disable-static make
Durch Hinzufügen des Flags --enable-shared werden gemeinsam genutzte Bibliotheken anstelle statischer Bibliotheken generiert. Das Flag --disable-static stellt sicher, dass keine statischen Bibliotheken erstellt werden.
Nachdem FFmpeg mit diesen Optionen neu erstellt wurde, können die neu kompilierten Bibliotheken mit make install in den entsprechenden Systemverzeichnissen installiert werden. Dadurch werden die PIC-fähigen FFmpeg-Bibliotheken für die Verknüpfung und Nutzung durch andere Programme verfügbar.
Das obige ist der detaillierte Inhalt vonWarum erhalte ich die Fehlermeldung „Die Verschiebung von R_ARM_MOVW_ABS_NC gegen „ein lokales Symbol' kann beim Erstellen eines gemeinsam genutzten Objekts nicht verwendet werden'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!