1. 程式人生 > >gcc 查看 引用頭文件的位置

gcc 查看 引用頭文件的位置

頭文件引用位置

場景:

代碼 使用了 msgpack庫,但makefile 沒有指定 msgpack的頭文件所在位置,也可以編譯通過。


可以得出 一定是在系統的某個位置 安裝了 msgpack,並且被找到。


但具體頭文件在哪個位置呢?


從網上 搜到 看到 都是 gcc/g++ 頭文件的 搜索路徑,-I指定頭文件的搜索路徑。 知道了搜索路徑,那我 需要 遍歷 搜索路徑上的每個目錄 去查找, 這樣比較費時, 但也是最容易想到的。


但可以通過 gcc 編譯程序的 過程,讓 gcc 自己列出所在位置.


gcc 由源碼到可執行二進制程序包含了:預處理,編譯,匯編,鏈接,四個階段;其對應gcc -E -S -c ,鏈接階段沒有特殊參數表示。


先說下gcc -o,這裏o代表 output,即指定輸出文件。

1.預處理階段:gcc -E test.c -o test.i,

-E參數指定處理到預處理階段停止,並輸出預處理結果,這裏指定輸出文件-o 是因為指定的話會直接輸出到標準輸出,

2.編譯階段:gcc -S test.i -o test.s

這個階段會把test.s 編譯成 匯編代碼

3.匯編階段:gcc -c test.s test.o

這個階段,把匯編代碼,匯編成 二進制代碼

4.鏈接階段:gcc test.o -o test

和其他庫一起 鏈接生成 可執行文件 test



可以利用預處理階段 找到 xx.h


  1. make, 讓makefile 生成 gcc 指令,因為可能包含了其他的 庫 頭文件,

  2. gcc -E test.c |grep xx.h

gcc 查看 引用頭文件的位置