gcc命令要檢視目標檔案型別方法如下:一、gcc options
-E 不生成檔案,只輸出預處理結果(輸出終端
-S 只預處理和編譯,把檔案編譯成為彙編程式碼greet.s
-c 預處理,編譯和彙編,生成.o的obj檔案 ( greet.o )
-o file 輸出名為file的可執行檔名 (預設為a.out)
-O -O2 最佳化編譯
-g: 產生可用於除錯的輸出
-Wall 提示更多警告資訊
-Wstrict-prototypes 如果函式的宣告或定義沒有指出參 數型別,編譯器就發出警告.
-Wl,option 將option作為選項傳遞給linker, option 逗號分割, 如:-Wl,-soname,libmymath.so.1
二、建立函式庫
分類:
靜態庫: 在編譯過程中將庫函式程式碼直接加入到生成的可執行程式中,程式執行過程中不需要利用庫函式。
動態庫: 編譯時,只是在生成的可執行程式中簡單指定需要使用的庫函式資訊,程式執行過程中需要利用庫函式。
共享庫: 共享庫的一種變化形式,目前大都採用共享庫的方式。(好處:1、節省物理記憶體;2、庫更新後不用重新連結;3、不需要在編譯時指定庫)
命名:
靜態庫: 字首lib+庫名+.a (libm.a, libstdc++.a等)
共享庫: 字首lib+庫名+.so+版本號 (libm.so.6, libc.so.6)
三、檢視可執行目標檔案結構:size
The size utility displays sizes of each section in an object file.
示例:
[root@boota]# size a.out
text data bss dec hex filename
1015 232 24 1271 4f7 a.out
四、檢視可執行檔案依賴哪些庫:ldd
The ldd utility is very useful in finding out the dependencies of an executable on shared libraries.
[root@boota]# ldd a.out
libc.so.6 => /lib/i686/libc.so.6 (0x4002c000)
/lib/ld-linux.so.2 =>/lib/ld-linux.so.2 (0x40000000)
gcc命令要檢視目標檔案型別方法如下:一、gcc options
-E 不生成檔案,只輸出預處理結果(輸出終端
-S 只預處理和編譯,把檔案編譯成為彙編程式碼greet.s
-c 預處理,編譯和彙編,生成.o的obj檔案 ( greet.o )
-o file 輸出名為file的可執行檔名 (預設為a.out)
-O -O2 最佳化編譯
-g: 產生可用於除錯的輸出
-Wall 提示更多警告資訊
-Wstrict-prototypes 如果函式的宣告或定義沒有指出參 數型別,編譯器就發出警告.
-Wl,option 將option作為選項傳遞給linker, option 逗號分割, 如:-Wl,-soname,libmymath.so.1
二、建立函式庫
分類:
靜態庫: 在編譯過程中將庫函式程式碼直接加入到生成的可執行程式中,程式執行過程中不需要利用庫函式。
動態庫: 編譯時,只是在生成的可執行程式中簡單指定需要使用的庫函式資訊,程式執行過程中需要利用庫函式。
共享庫: 共享庫的一種變化形式,目前大都採用共享庫的方式。(好處:1、節省物理記憶體;2、庫更新後不用重新連結;3、不需要在編譯時指定庫)
命名:
靜態庫: 字首lib+庫名+.a (libm.a, libstdc++.a等)
共享庫: 字首lib+庫名+.so+版本號 (libm.so.6, libc.so.6)
三、檢視可執行目標檔案結構:size
The size utility displays sizes of each section in an object file.
示例:
[root@boota]# size a.out
text data bss dec hex filename
1015 232 24 1271 4f7 a.out
四、檢視可執行檔案依賴哪些庫:ldd
The ldd utility is very useful in finding out the dependencies of an executable on shared libraries.
示例:
[root@boota]# ldd a.out
libc.so.6 => /lib/i686/libc.so.6 (0x4002c000)
/lib/ld-linux.so.2 =>/lib/ld-linux.so.2 (0x40000000)