日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Linux GCC常用命令

發布時間:2024/3/24 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux GCC常用命令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

一、示例一

1.簡單編譯

1.1預處理

1.2編譯為匯編代碼

1.3匯編

1.4連接

?2.多個程序文件的編譯

3檢錯

4庫文件連接

?二、示例二

1.準備hello.c

?2.預處理

3.編譯

4.匯編

5.鏈接

6.分析ELF文件

6.1ELF文件的段

6.2反匯編ELF


一、示例一

1.簡單編譯

創建文件mkdir test4

cd? test4

gedit test.c

test.c內容如下:

?

?這個程序一步到位的·指令是gcc test.c -o test。這一過程是分為四個階段進行的,即預處理(也稱預編譯)、編譯、匯編和連接。

1.1預處理

gcc -E test.c -o test.i 或者gcc -E test.c

gcc 的-E選項 可以讓編譯器在預處理后停止,并輸出與處理結果。在本例中,預處理結果就是將stdio.h文件中的內容插入到test.c中

1.2編譯為匯編代碼

gcc -S test.i -o test.s

gcc的-S選項表示程序編譯期間,在生成匯編代碼之后停止,-o輸出匯編代碼文件。

1.3匯編

gcc -c test.s -o test.o

對于上一小節生成的匯編代碼文件test.s,gas匯編器負責將其編譯為目標文件

1.4連接

gcc test.o -o test

?

對于上一小節中生成的test.o,將其與C標準輸入輸出庫進行連接,最終生成程序test,然后執行

?2.多個程序文件的編譯

該處內容有在上上一篇博客中編寫,有需要可前往。

3檢錯

gcc -pedantic test.c -o test

-pedantic選項能夠幫助程序員發現一些不符合ANSI/ISO C標準的代碼,但不是全部,事實上只有ANSI/ISO C語言標準中要求進行編譯器診斷的情況才有可能被GCC發現并警告。

gcc -Wall test.c -o test

-Wall能夠使GCC產生更多的警告信息

gcc -Werror test.c -o test

-Werror選項會使GCC在所有產生警告的地方停止編譯,迫使程序員對代碼進行修改。

4庫文件連接

函數庫實際上就是一些頭文件(.h)和庫文件(so、lib、dll)的集合,Linux下的大多數函數都默認頭文件放到/usr/include目錄下,而庫文件則放到/usr/lib目錄下,但有時候需要用到的庫不在這些目錄下,所以GCC在編譯時必須用自己的辦法來查找所需的頭文件和庫文件。

test.c是在Linux上使用c連接mysql,需要去官網下載MySQL Connectors的C庫,里面有一個include文件夾,包含mysql connectors的頭文件,還有一個lib文件夾,里面包含二進制so文件libmysqlclient.so

include文件夾路徑為/usr/dev/mysql/include.lib? ??

lib文件夾是/usr/dev/mysql/lib

編譯成可執行文件

gcc -c -I /usr/dev/mysql/include test.c -o test.o

鏈接

把所有目標文件鏈接成可執行文件

gcc -L /usr/dev/mysql/lib -lmysqlclient test.o -o test

?

強制鏈接時使用靜態庫

默認情況下,GCC在鏈接時會優先使用動態庫。為了讓GCC在鏈接時只用到靜態庫可使用以下命令

gcc -L /usr/dev/mysql/lib? -static -lmysqlclient test.o -o test

?二、示例二

1.準備hello.c

?2.預處理

gcc -E hello.c -o hello.i

3.編譯

gcc -S hello.i -o hello.s

?

4.匯編

gcc -c hello.s -o hello.o或者as -c hello.s -o hello.o

?

5.鏈接

若使用命令gcc hello.c -o hello則會使用動態庫進行鏈接,生成的ELF可執行文件大小和鏈接的動態庫如下所示

?若使用命令gcc -static hello.c -o hello則會使用靜態庫進行鏈接,生成的ELF可執行文件大小和鏈接的動態庫如下所示

6.分析ELF文件

6.1ELF文件的段

readelf -S hello

6.2反匯編ELF

objdump -D hello

使用objdump -S將其反匯編并且將其C語言源代碼混合顯示出來

gcc -o hello -g hello.c

objdump -S hello

?

?

?

?

?

?

?

?

?

總結

以上是生活随笔為你收集整理的Linux GCC常用命令的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。