編譯流程的四個步驟
預處理編譯
彙編鏈結
hello.c 預處理—> hello.i 編譯—> hello.s 彙編—> hello.o 鏈結—> hello
gcc編譯流程
gcc [optio | filename]
option:
-e:可以使編譯器在預處理結束時就停止編譯。
-o:指的是目標檔案。
-s:可以使編譯器完成編譯時就停止。
-c:彙編階段
gcc -e -o a.i a.c(預處理)
gcc -s -o a.s a.i(編譯)
gcc -c a.s -o a.o(彙編)
gcc a.o -o a(鏈結)
gcc警告提示
主要分為兩類:-wall類警告、非-wall類警告
-wall類警告:主要如下
-wall:開啟所有型別語法警告
非-wall類警告:主要兩個如下
-ansi:該選項強制gcc生成標準語法要求的警告資訊。
-pedantic:該選項允許發出ansi c標準所列出的全部警告資訊。
gcc使用函式庫
linux中函式庫包括兩類:靜態庫和共享庫
靜態庫的**在編譯時就已經連線到開發人員開發的應用程式中(字尾名.a),而共享庫是在程式開始執行時被載入(字尾名.so和版本號)。
加路徑:
-i《目錄》:在標頭檔案的搜尋列表中新增***目錄,這樣,gcc就會到指定的目錄去查詢相應的標頭檔案。(eg:gcc hello.c -i/root/workplace/gcc/ -o hello)路徑名中不包括檔名
在include語句中,<>表示在標準路徑中搜尋標頭檔案,在linux中預設為/usr/include,
-l《目錄》:用於指明庫檔案的路徑。假如程式需要用到目錄/root/workplace/gcc/lib(eg:gcc hello.c -l/root/workplace/gcc/lib -lsunq -o hello)路徑名中不包括檔名。
使用不同鏈結庫,庫名相同的靜態庫檔案和共享庫檔案,鏈結時呼叫共享庫,linux預設採用非動態鏈結的方式。(-l小寫的l)
-static -l:連線同名靜態庫。
GCC編譯器的使用
看下面的例子 test.c include main char str i like linux i advices you jion in the linux world printf s n str exit 0 使用gcc編譯 輸入gcc c test.c得到目標檔案test.o。c命令表示對...
GCC編譯器的使用
看下面的例子 test.c include main char str i like linux i advices you jion in the linux world printf s n str exit 0 使用gcc編譯 輸入gcc c test.c得到目標檔案test.o。c命令表示對...
GCC編譯器的使用
看下面的例子 test.c include main char str i like linux i advices you jion in the linux world printf s n str exit 0 使用gcc編譯 輸入gcc c test.c得到目標檔案test.o。c命令表示對...