Ich habe gerade ein cross gdb kompiliert, indem ich die Quelle auf MSYS2/MINGW64 kompiliert habe. Aber wenn ich gdb läutete, es wirft einen Fehler und beschwert sich, dass es nicht starten kann, weil es libexpat-1.dll
benötigt.Warum Cross gdb benötigt libexpat-1.dll?
Dies ist, was ich die GDB kompilieren tat:
- den Quellcode Got
git clone git://sourceware.org/git/binutils-gdb.git
In einem anderen Verzeichnis:
export TARGET=x86_64-amd-linux-gnu
export PREFIX=/tmp/myToolChain
binutils/gdb/path/configure --with-python=/mingw64/bin/python --target=${TARGET} --prefix=${PREFIX} --disable-shared --enable-static
und
make && make install
Es kompiliert ohne Probleme. Aber ich weiß nicht, warum es die Bibliotheken benötigt, während ich es statisch kompiliert habe und die Shared Libraries deaktiviert habe.
Ich habe auch versucht, nicht libexpat
während der Kompilierung zu verwenden, aber dann ist es über eine andere Bibliothek libiconv-2.dll
.
Was habe ich vermasselt?
Edit: Ich hatte C:\msys64\mingw64\bin
in meinem Weg nicht. Nach dem Hinzufügen bekomme ich den vorherigen Fehler nicht mehr.
Aber ich habe immer noch diese Frage, warum, obwohl ich die Bibliotheken statisch verknüpfen die endgültige binäre noch einige Bibliotheken benötigt?
MSYS2 verfügt über drei verschiedene Shellumgebungen: die MSYS2-Shell, die MinGW-w64-Win64-Shell und die MinGW-w64-Win32-Shell. Welchen benutzen Sie? (d. h. was ist der Wert von "echo $ MSYSTEM"?) Wie genau führen Sie gdb aus und was ist die genaue Fehlermeldung, die Sie sehen? –
Ich habe die ganze Sache aus MINGW-W64 Win64 Shell gebaut; '$ echo $ MSYSTEM' gibt' MINGW64' zurück. Ich öffne ein CMD-Fenster im Verzeichnis und führe 'x86_64-amd-linux-gnu-gdb.exe --version' aus. Der Fehler ist 'Das Programm kann nicht gestartet werden, weil libexpat-1.dll von Ihrem Computer fehlt. Versuchen Sie das Programm neu zu installieren, um dieses Problem zu beheben – Ali