Heim >Backend-Entwicklung >C++ >Warum behebt die Neukompilierung mit -fPIC Verknüpfungsfehler?

Warum behebt die Neukompilierung mit -fPIC Verknüpfungsfehler?

Linda Hamilton
Linda HamiltonOriginal
2024-11-07 05:04:021065Durchsuche

Why does recompiling with -fPIC resolve linking errors?

Neukompilierung mit -fPIC: Beheben von Verknüpfungsfehlern

Eine Neukompilierung mit -fPIC ist erforderlich, wenn der Fehler „Verlagerung von R_ARM_MOVW_ABS_NC gegen ein lokales Symbol“ auftritt ' kann beim Erstellen eines gemeinsamen Objekts nicht verwendet werden. Dieser Fehler tritt auf, wenn eine Objektdatei mit einem eingeschränkten Symbol verknüpft wird, das nicht verwendet werden kann, wenn es mit einem gemeinsam genutzten Objekt kombiniert wird.

Um dieses Problem erfolgreich zu beheben und mit -fPIC neu zu kompilieren:

  • Statische und dynamische Bibliotheken deaktivieren: Entgegen dem Vorschlag des Compilers könnte die Deaktivierung sowohl statischer als auch dynamischer Bibliotheken eine direktere Lösung sein. Wählen Sie die Methode aus, die Ihren Anforderungen am besten entspricht.
  • Gemeinsame Bibliotheken aktivieren: Ein alternativer Ansatz besteht darin, gemeinsam genutzte Bibliotheken bei der Konfiguration der Software zu aktivieren. Dies kann durch Hinzufügen der Option --enable-shared zu den ./configure-Befehlen erreicht werden, wodurch die Kompilierung einer dynamischen Bibliothek (z. B. .so) anstelle einer statischen Bibliothek (z. B. .a) sichergestellt wird. .

Durch die Implementierung dieser Schritte können Sie Ihr ffmpeg mit -fPIC neu kompilieren, wodurch der Verknüpfungsfehler behoben wird und eine erfolgreiche Kompilierung Ihres Programms ermöglicht wird, das die ffmpeg-Bibliothek verwendet.

Das obige ist der detaillierte Inhalt vonWarum behebt die Neukompilierung mit -fPIC Verknüpfungsfehler?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn