Beheben von Verknüpfungsfehlern mit „-l“-Nichtübereinstimmungen
Beim Kompilieren Ihres Programms wird die Fehlermeldung „usr/bin/ld: nicht möglich“ angezeigt find -l
Normalerweise gibt das „l“-Flag eine Bibliothek an, mit der verknüpft werden soll. Wenn der Linker die Bibliothek jedoch nicht finden kann, Es wird dieser Fehler angezeigt. Um dieses Problem weiter zu diagnostizieren, ist es hilfreich zu untersuchen, wonach der Linker sucht.
Ausführlichen Modus verwenden
Der Linker bietet einen ausführlichen Modus, der Aufschluss über das geben kann Bibliotheken, die es zu finden versucht. Um in den ausführlichen Modus zu wechseln, verwenden Sie den folgenden Befehl, bevor Sie den Linker aufrufen:
LD_DEBUG=all
Bedenken Sie beispielsweise den Fehler „usr/bin/ld: can not find -lzlib“ während der Kompilierung. Wenn Sie den folgenden Befehl mit LD_DEBUG=all ausführen, erhalten Sie detaillierte Debugging-Informationen:
LD_DEBUG=all ld -lzlib --verbose
Dekodierung der Ausgabe
Die Ausgabe im ausführlichen Modus zeigt möglicherweise den spezifischen Pfad an, in dem sich der Linker befindet sucht nach der Bibliothek und ob sie die benötigten Dateien finden kann. Es listet alle Verzeichnisse auf, in denen es durchsucht wird, und gibt an, ob die entsprechende Bibliotheksdatei (.so oder .a) gefunden wurde.
Problem lösen
Wenn die ausführliche Wenn die Ausgabe anzeigt, dass die eigentliche Bibliotheksdatei nicht im erwarteten Pfad vorhanden ist, müssen Sie einen symbolischen Link zum richtigen Speicherort angeben. Im Fall der ZLIB-Bibliothek kann das Problem beispielsweise durch Verknüpfen des folgenden symbolischen Links behoben werden:
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
Indem Sie diese Schritte befolgen, können Sie die fehlende Bibliothek lokalisieren und den erforderlichen symbolischen Link erstellen, um eine Verknüpfung mit der Bibliothek herzustellen Korrekte Bibliotheksdatei, damit Ihre Kompilierung erfolgreich fortgesetzt werden kann.
Das obige ist der detaillierte Inhalt vonWarum kann mein Compiler meine Bibliothek nicht finden (-l Flag Mismatch)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!