|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
嵌入式C語(yǔ)言應(yīng)用程序開發(fā)工具-gcc使用指南 |
| 作者:mistyeyed 欄目:ARM技術(shù) |
嵌入式開發(fā)工具通常包括文本編輯工具,gcc編譯器,MakeFile文件,gdb調(diào)式工具. gcc是在Linux下運(yùn)行的自由軟件,本身是編譯器,也可以用作交叉編譯工具。所以說(shuō)gcc是完整的交叉C編譯器。 gcc的主要部件包括以下部件: C交叉編譯器gcc 交叉匯編工具as 反匯編工具objdump 連接工具ld 調(diào)試工具GDB gcc最基本的用法是∶gcc [options] [filenames] 程序編譯的四個(gè)過程:預(yù)處理、編譯、匯編、連接 基本參數(shù)說(shuō)明: -E:只進(jìn)行預(yù)處理 -S:只進(jìn)行編譯;產(chǎn)生匯編代碼 -c:只編譯、匯編,不連接成為可執(zhí)行文件,編譯器只是由輸入的.c等源代碼文件生成.o為后綴的目標(biāo)文件,通常用于編譯不包含主程序的子程序文件 -o output_filename:確定輸出文件的名稱為output_filename,同時(shí)這個(gè)名稱不能和源文件同名。如果不給出這個(gè)選項(xiàng),gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out -v:打印程序的編譯過程,以及編譯器的版本 -g:產(chǎn)生符號(hào)調(diào)試工具(GNU的gdb)所必要的符號(hào)資訊,要想對(duì)源代碼進(jìn)行調(diào)試,必須加入這個(gè)選項(xiàng) -o:對(duì)程序進(jìn)行優(yōu)化編譯、連接 -o2:比-o更好的優(yōu)化 -Idirname:將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預(yù)編譯過程中使用的參數(shù)。C程序中的頭文件包含兩種情況∶ A)#include <> B)#include “myinc.h” 其中,A類使用尖括號(hào)(< >),B類使用雙引號(hào)(“ ”)。對(duì)于A類,預(yù)處理程序cpp在系統(tǒng)預(yù)設(shè)包含文件目錄(如/usr/include)中搜尋相應(yīng)的文件,而對(duì)于B類,cpp在當(dāng)前目錄中搜尋頭文件,這個(gè)選項(xiàng)的作用是告訴cpp,如果在當(dāng)前目錄中沒有找到需要的文件,就到指定的dirname目錄中去尋找。在程序設(shè)計(jì)中,如果我們需要的這種包含文件分別分布在不同的目錄中,就需要逐個(gè)使用-I選項(xiàng)給出搜索路徑 -Ldir:將dir所指出的目錄加入到程序函數(shù)檔案庫(kù)文件的目錄列表中,是在連接過程中使用的參數(shù)。在預(yù)設(shè)狀態(tài)下,連接程序ld在系統(tǒng)的預(yù)設(shè)路徑中(如/usr/lib)尋找所需要的檔案庫(kù)文件,這個(gè)選項(xiàng)告訴連接程序,首先到-L指定的目錄中去尋找,然后到系統(tǒng)預(yù)設(shè)路徑中尋找,如果函數(shù)庫(kù)存放在多個(gè)目錄下,就需要依次使用這個(gè)選項(xiàng),給出相應(yīng)的存放目錄 -lname:在連接時(shí),裝載名字為“l(fā)ibname.a”的函數(shù)庫(kù),該函數(shù)庫(kù)位于系統(tǒng)預(yù)設(shè)的目錄或者由-L選項(xiàng)確定的目錄下。例如,-lm表示連接名為“l(fā)ibm.a”的數(shù)學(xué)函數(shù)庫(kù) -nostdlib:不使用系統(tǒng)默認(rèn)的startup file和系統(tǒng)函數(shù)庫(kù),僅使用自己定義的庫(kù)進(jìn)行連結(jié),某些特定的平臺(tái)可能需要系統(tǒng)默認(rèn)的庫(kù)libgcc.a避免一些系統(tǒng)錯(cuò)誤;因此當(dāng)使用此命令是一般需要將libgcc.a庫(kù)另外指定進(jìn)行連接。 ld(LINK DESCRIPTION)文件:ld文件是指出連接時(shí)內(nèi)存映象格式的文件 大部分情況下各種參數(shù)混合使用時(shí)的順序不會(huì)有什么影響,但是當(dāng)同一個(gè)參數(shù)連續(xù)使用時(shí)將產(chǎn)生不同的效應(yīng),例如:-L命令,不同的順序則編譯起搜索的順序不同 |
| 2樓: | >>參與討論 |
| 作者: mistyeyed 于 2005/10/27 12:19:00 發(fā)布:
要支持啊 大家要是覺得 有用就回帖支持一下 |
|
| 3樓: | >>參與討論 |
| 作者: seaseesky 于 2005/10/27 15:41:00 發(fā)布:
頂一下 望再出好帖 |
|
| 4樓: | >>參與討論 |
| 作者: Eric_CAA 于 2005/10/27 16:46:00 發(fā)布:
支持! RT! |
|
| 5樓: | >>參與討論 |
| 作者: mistyeyed 于 2005/10/27 20:07:00 發(fā)布:
會(huì)努力的 大家關(guān)注 會(huì)努力的 大家關(guān)注 |
|
| 6樓: | >>參與討論 |
| 作者: mistyeyed 于 2005/10/28 17:09:00 發(fā)布:
http://www.bluemcu.com/ http://www.bluemcu.com/ 上面有的新文章 大家看看 多提意見 |
|
| 7樓: | >>參與討論 |
| 作者: a_wwei 于 2005/10/30 14:08:00 發(fā)布:
支持! |
|
| 8樓: | >>參與討論 |
| 作者: fsslong 于 2005/10/30 16:14:00 發(fā)布:
不錯(cuò)啊 |
|
| 9樓: | >>參與討論 |
| 作者: mistyeyed 于 2005/10/31 20:33:00 發(fā)布:
http://www.bluemcu.com/ http://www.bluemcu.com/ |
|
| 10樓: | >>參與討論 |
| 作者: mistyeyed 于 2005/11/3 15:45:00 發(fā)布:
自己頂 自己頂 |
|
| 11樓: | >>參與討論 |
| 作者: mistyeyed 于 2005/12/13 0:14:00 發(fā)布:
ha ha |
|
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |