Je viens de compiler un gdb croisé en compilant la source sur MSYS2/MINGW64. Mais quand j'appelle gdb il jette une erreur et se plaint qu'il ne peut pas démarrer car il a besoin de libexpat-1.dll
.Pourquoi Cross gdb a besoin de libexpat-1.dll?
C'est ce que je l'ai fait pour compiler le gdb:
- Vous avez le code source
git clone git://sourceware.org/git/binutils-gdb.git
Dans un autre répertoire:
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
et
make && make install
Il compile sans aucun problème. Mais je ne sais pas pourquoi il a besoin des bibliothèques alors que je l'ai compilé de manière statique et désactivé les bibliothèques partagées.
J'ai également essayé de ne pas utiliser libexpat
lors de la compilation, mais alors il se rapproche d'une autre bibliothèque libiconv-2.dll
.
Qu'est-ce que j'ai foiré?
Modifier: Je n'avais pas C:\msys64\mingw64\bin
dans mon chemin. Après l'avoir ajouté, je ne reçois plus l'erreur précédente.
Mais j'ai encore cette question que pourquoi bien que je lie statiquement les bibliothèques le binaire final a besoin encore de quelques bibliothèques?
MSYS2 dispose de trois environnements de shell différents: le shell MSYS2, le shell MinGW-w64 Win64 et le shell MinGW-w64 Win32. Lequel utilisez-vous? (c'est-à-dire quelle est la valeur de 'echo $ MSYSTEM'?) Comment exactement exécutez gdb et quel est le message d'erreur exact que vous voyez? –
J'ai construit l'ensemble de MINGW-W64 Win64 shell; '$ echo $ MSYSTEM' renvoie' MINGW64'. J'ouvre une fenêtre CMD dans le répertoire puis exécute 'x86_64-amd-linux-gnu-gdb.exe --version'. L'erreur est 'Le programme ne peut pas démarrer car libexpat-1.dll est absent de votre ordinateur. Essayez de réinstaller le programme pour résoudre ce problème. – Ali