specs=`dirname $(gcc -print-libgcc-file-name)`/specs
gcc -dumpspecs | sed \
-e 's@/lib\(64\)\?/ld@/tools&@g' \
-e "/^\*cpp:$/" > $specs
echo "new specs file is: $specs"
unset specs
再設定成預設值
gcc -dumpspecs | sed -e 's@/tools@@g' \
-e '/\*startfile_prefix_spec:/' \
-e '/\*cpp:/' > \
`dirname $(gcc --print-libgcc-file-name)`/specs
驗證gcc 工作是否正常
echo "int main(){}" > dummy.c
gcc -v -wl,--verbose &>dummy.log dummy.c
驗證dynamic linker
readelf -l a.out | grep ': /lib'
驗證 startfiles
grep -o '/usr/lib.*/crt[1in].*succeeded' dummy.log
驗證 search header files
grep -b2 '^ /usr/include' dummy.log
驗證 search libraries path
grep 'search.*/usr/lib' dummy.log | sed 's|; |\n|g'
驗證 correct libc
grep "/lib.*/libc.so.6 " dummy.log
驗證 使用 correct dynamic linker
grep "found" dummy.log
GCC編譯工具鏈
編譯過程控制 e 預處理,會呼叫cpp預處理器,但不生成檔案。gcc e main.c o main.i c 預處理時,不刪除注釋資訊 s 生成彙編檔案,gcc合併預編譯和編譯,呼叫ccl程式完成 c 將原始檔編譯成目標檔案,但是不鏈結,呼叫彙編器as o 輸出目標名稱,gcc預設編譯出來的檔案是a...
GCC 編譯命令GUN工具鏈的使用
binutils原始碼工具包中的常用命令 gcc g ld ldd nm strings readelf addr2line strip objcopy as ar gdb 1 gcc g 編譯器 示例 gcc c test.c gcc o test test.c gcc e o test.i te...
GCC 的編譯過程及編譯工具
nasm的安裝與使用 總結本文講解了gcc的編譯過程,預處理 編譯 彙編和連線。還有編譯工具nasm的使用。include intmain void 預處理語句 gcc e hello.c o hello.ihello.i檔案內容 gcc s hello.i o hello.shello.s檔案內容...