最近在看ram下的彙編以及優化。順便看了下用gcc編譯的過程。
用helloworld.c 來說明問題;
1.預編譯:
gcc -e helloworld.c -o helloworld.i
在這一步之後,生成的.i檔案會比你的.c檔案大很多。裡面包含著你的.c中包含的標頭檔案的內容,以及一些預處理**等。(必須使用大寫的e才行)
2.編譯:
gcc -s helloworld.i -o helloworld.s
在這一步之後,看到你的**又變小很多了相比.i檔案來說。生成的了彙編檔案。(必須大寫s)
3.彙編:
gcc -c helloworld.s -o helloworld.o
這一步之後生成了elf格式的目標**。(必須小寫c)
gcc helloworld.o -o helloworld
這一步生成了可執行的程式。
說明:-o 表示生成的檔名,否則會預設輸出a.out。
gcc編譯的四個階段
gcc編譯的四個階段 如下圖 e preprocess only do not compile,assemble or link 只預處理,不會編譯 彙編 鏈結 s compile only do not assemble or link 只編譯,不會彙編 鏈結 c compile and asse...
GCC編譯的四個階段
gcc編譯流程分為4個步驟,分別為 預處理 pre processing 編譯 compiling 彙編 assembling 鏈結 linking 1 預處理階段 在該階段,編譯器將上述 中的stdio.h編譯進來,並且使用者可以使用gcc的選項 e 進行檢視,該選項的作用是把源 進行預處理。預處...
ROS catkin編譯的四個步驟
1.宣告依賴庫。首先,我們需要宣告程式所依賴的其他功能包。為了給出依賴庫,編輯包目錄下的 cmakelists.txt 檔案。該文 件的預設版本含有如下行 find package catkin required 所依賴的其他 catkin 包可以新增到這一行的 components 關鍵字 後面,...