
gcc
Beim Ausführen des Befehls auf einem Linux-Rechner ist mir ein Fehler begegnet , und als ich den Fehler gegoogelt habe, habe ich herausgefunden bfd
, dass Leute sagen, er sei in einer neueren Version der Bibliothek behoben worden. Bei weiterer Suche habe ich herausgefunden, dass es bfd
sich möglicherweise um eine statische Bibliothek handelt, mit der gcc
beim Erstellen eine Verknüpfung hergestellt wurde, und nicht um eine gemeinsam genutzte dynamische Bibliothek, aber da bin ich mir nicht sicher.
Wie finde ich heraus, ob gcc
ich eine statische oder eine dynamische Version verwende bfd
und welche Version von bfd
?
Antwort1
BFD ist die Bibliothek, die von Programmen verwendet wird, aus denen die Binutils von GNU bestehen, zu denen unter anderem ld
, gold
, und gehören as
. Sie werden normalerweise in einem Paket namensBinärdateienUndbinutils-dev(Debian und Freunde) oderbinutils-devel(Fedora/RHEL). Sie können jedes der oben genannten Programme mit einem -V
Schalter ausführen, um seine Versionsnummer abzurufen. Sie können verwenden, readelf
um ihre Abhängigkeiten aufzulisten. So listen Sie die Abhängigkeiten ld
einschließlich ihrer Typen auf:
readelf -d `which ld`
Dynamic section at offset 0xc900c contains 28 entries:
Tag Type Name/Value
0x00000001 (NEEDED) Shared library: [libbfd-2.22-system.so]
0x00000001 (NEEDED) Shared library: [libz.so.1]
0x00000001 (NEEDED) Shared library: [libdl.so.2]
0x00000001 (NEEDED) Shared library: [libc.so.6]
Ich bin mit der Funktionsweise von GCC nicht sehr vertraut, würde aber sagen, dass der Gedanke, dass GCC jemals mit BFD verknüpft wird, merkwürdig ist.