381 votes

Comment puis-je forcer make/GCC à me montrer les commandes ?

J'essaie de déboguer un problème de compilation, mais je n'arrive pas à faire en sorte que GCC (ou peut-être make ??) m'indique les commandes de compilation et d'édition de liens qu'il exécute.

Voici le résultat que je vois :

  CCLD   libvirt_parthelper
libvirt_parthelper-parthelper.o: In function `main':
/root/qemu-build/libvirt-0.9.0/src/storage/parthelper.c:102: undefined reference to `ped_device_get'
/root/qemu-build/libvirt-0.9.0/src/storage/parthelper.c:116: undefined reference to `ped_disk_new'
/root/qemu-build/libvirt-0.9.0/src/storage/parthelper.c:122: undefined reference to `ped_disk_next_partition'
/root/qemu-build/libvirt-0.9.0/src/storage/parthelper.c:172: undefined reference to `ped_disk_next_partition'
/root/qemu-build/libvirt-0.9.0/src/storage/parthelper.c:172: undefined reference to `ped_disk_next_partition'
collect2: ld returned 1 exit status
make[3]: *** [libvirt_parthelper] Error 1

Ce que je veux voir devrait être similaire à ceci :

$ make
gcc -Wall   -c -o main.o main.c
gcc -Wall   -c -o hello_fn.o hello_fn.c
gcc   main.o hello_fn.o   -o main

Remarquez que cet exemple a l'intégralité gcc commande affichée. L'exemple ci-dessus affiche simplement des choses comme "CCLD libvirt_parthelper". Je ne sais pas comment contrôler ce comportement.

0 votes

Est-ce que vous utilisez un makefile, ou juste un gcc commande ?

29 votes

Cela ressemble à Kbuild o Autotools sortie. Essayez make V=1 .

1 votes

18voto

J'aime utiliser :

make --debug=j

https://linux.die.net/man/1/make

--debug [=FLAGS]

Imprime les informations de débogage en plus du traitement normal. Si les FLAGS sont omis, le comportement est identique à celui de la commande -d a été spécifié. FLAGS peut être un pour toutes les sorties de débogage (comme avec l'option -d ), b pour le débogage de base, v pour un débogage de base plus verbeux, i pour montrer les règles implicites, j pour plus de détails sur l'invocation des commandes et m pour le débogage lors de la refonte des makefiles.

14voto

Ru Hasha Points 91

Selon la version de votre automake, vous pouvez aussi utiliser ceci :

make AM_DEFAULT_VERBOSITY=1

Référence : AM_DEFAULT_VERBOSITY

Note : J'ai ajouté cette réponse depuis V=1 n'a pas fonctionné pour moi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X