我如何強制make / gcc向我顯示命令?


Answers

由自動工俱生成的庫makefiles(必鬚髮布./configure )通常有一個詳細選項,所以基本上,使用make VERBOSE=1或者make V=1應該給你完整的命令。

但這取決於生成文件的方式。

-d選項可能會有幫助,但會給你一個非常長的輸出。

Question

我試圖調試一個編譯問題,但我似乎無法得到GCC(或者它可能是編譯??)向我展示它正在執行的實際編譯器和鏈接器命令。 這是我看到的輸出結果:

  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

我想看到的應該與此類似:

$ 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

注意這個例子是如何顯示完整的gcc命令的。 上面的例子只是顯示了諸如“CCLD libvirt_parthelper”之類的東西。 我不知道如何控制這種行為。




自從GNU Make 4.0版本以來,-- --trace參數是一個很好的方式來告訴makefile為什麼和為什麼做,輸出如下行:

makefile:8: target 'foo.o' does not exist

要么

makefile:12: update target 'foo' due to: bar