2013年2月20日 星期三

blogger Code排版

原始碼排版網站
http://tools.devshed.com/?option=com_mechtools&tool=25
http://quickhighlighter.com/

看 GCC 預設幫使用者加了什麼東西

看 GCC 預設幫使用者加了什麼東西

http://www.study-area.org/cyril/opentools/opentools/x869.html

gcc怎麼知道去哪裡找foo.c裡面所include的header檔,連結資料庫 與系統定義呢? 總共有下列來源指定gcc去那找。

  1. 當初在編譯時指定的(在~gcc/gcc/collect2.c:locatelib()
  2. 寫在specs內的
  3. 後來用-D -I -L指定的
  4. gcc環境變數設定(編譯的時候)
  5. ld.so的環境變數(這是run time的時候)

 

 

  1. $ echo 'main(){printf("hello world\n");}' | gcc -E -v -
文字介面顯示:
  1. Using built-in specs.
  2. Target: i486-linux-gnu
  3. Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr
  4. --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
  5. --enable-nls --with-gxx-include-dir=/usr/include/c++/4.1.3 --program-suffix=-4.1 --enable-__cxa_atexit
  6. --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --enable-checking=release i486-linux-gnu
  7. Thread model: posix
  8. gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
  9.  /usr/lib/gcc/i486-linux-gnu/4.1.3/cc1 -E -quiet -v - -mtune=generic
  10. ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
  11. ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.1.3/../../../../i486-linux-gnu/include"
  12. ignoring nonexistent directory "/usr/include/i486-linux-gnu"
  13. #include "..." search starts here:
  14. #include <...> search starts here:
  15.  /usr/local/include
  16.  /usr/lib/gcc/i486-linux-gnu/4.1.3/include
  17.  /usr/include
  18. End of search list.
  19. # 1 "<stdin>"
  20. # 1 "<built-in>"
  21. # 1 "<command line>"
  22. # 1 "<stdin>"
  23. main(){printf("hello world\n");}
用途: 查看reference的include檔 可以用來展開經過preprocessor處理過後的#define函式