看 GCC 預設幫使用者加了什麼東西
gcc怎麼知道去哪裡找foo.c裡面所include的header檔,連結資料庫
與系統定義呢?
總共有下列來源指定gcc去那找。
- 當初在編譯時指定的(在~gcc/gcc/collect2.c:locatelib()
- 寫在specs內的
- 後來用-D -I -L指定的
- gcc環境變數設定(編譯的時候)
- ld.so的環境變數(這是run time的時候)
$ echo 'main(){printf("hello world\n");}' | gcc -E -v -
文字介面顯示:
Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--enable-nls --with-gxx-include-dir=/usr/include/c++/4.1.3 --program-suffix=-4.1 --enable-__cxa_atexit
--enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
/usr/lib/gcc/i486-linux-gnu/4.1.3/cc1 -E -quiet -v - -mtune=generic
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.1.3/../../../../i486-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
/usr/local/include
/usr/lib/gcc/i486-linux-gnu/4.1.3/include
/usr/include
End of search list.
# 1 "<stdin>"
# 1 "<built-in>"
# 1 "<command line>"
# 1 "<stdin>"
main(){printf("hello world\n");}
用途:
查看reference的include檔
可以用來展開經過preprocessor處理過後的#define函式
沒有留言:
張貼留言