###### tags: `組合語言` # 組合語言共筆 5 : GNU Toolchains ### GCC 指令解釋 ``` gcc -fverbose-asm : 會在 <.s> 檔案中加入註解,是檔案更易讀~ gcc -g : 加入除錯(debug)資訊到程式中 gcc -o <file> : 設定輸出檔案前要加 gcc -O、-O1、-O2 : 優化 ``` ### tool chain 指一系列軟體開發工具 :::success - Compiler - linker - Library : 函式庫、庫 ( 可以被 linking ) - Debugger ::: ### GNU toolchain :::success - gcc : GNU(GNU Compiler Collection)編譯器套裝 - g++ : 同 gcc 功能,但只會遵循 c++ 程式碼的編譯方式 - gdb : debugger - make: 編譯多個文件的工具 (?),會調用 gcc ... ::: ### Cross Compiler Toolchain :::success 可以編譯出在與本身不同的機器下都可執行的檔案 - 方法 : 會根據設定的機器的處理器,編譯出相應的檔案 ``` 編譯指令(不再只是 gcc) : arm-elf-gcc : 專為嵌入式系統開發的 C 函式庫 arm-elf-gcc -mcpu=<輸出機器處理器> : 設定編譯後運行機器的處理器 ``` ::: ### Native V.S Cross Compiler ToolChain :::warning - Native : 編譯過後的程式只能在同種架構的機器上運行 - Cross : 可以在不同架構機器中運行, ::: --- ### Reference - [gcc 指令](https://hackmd.io/@MVMC-lab/BJnlxNwVr/%2Fp2Pkg8TAQJe-_gN_goxtIA) - [工具鏈-維基百科](https://zh.wikipedia.org/zh-tw/%E5%B7%A5%E5%85%B7%E9%8F%88) - [gcc 和 g++ 的聯絡和區別](https://iter01.com/565664.html) - [深入讲解GCC和Make的区别](https://cloud.tencent.com/developer/article/1343055) - [Tool Chain](https://hugh712.gitbooks.io/buildroot/content/tool_chain.html) - [3分鐘看懂gcc、arm-Linux-gcc和arm-elf-gcc的組成及區別](https://www.796t.com/content/1547057528.html)