日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年06月21日(星期六)

2020年06月21日 | arm學習筆記011之arm-linux-gcc的命令參數介紹

發(fā)布者:qpb1234 來源: eefocus關鍵字:arm  arm-linux-gcc  命令參數 手機看文章 掃描二維碼
隨時隨地手機看文章

我們需要編譯出運行在ARM平臺上的代碼,所使用的交叉編譯器為 arm-linux-gcc。下面將arm-linux-gcc編譯工具的一些常用命令參數介紹給大家。


在此之前首先介紹下編譯器的工作過程,在使用GCC編譯程序時,編譯過程分為四個階段:
1. 預處理(Pre-Processing)
2. 編譯(Compiling)
3. 匯編(Assembling)
4. 鏈接(Linking)


Linux程序員可以根據自己的需要讓 GCC在編譯的任何階段結束,以便檢查或使用編譯器在該階段的輸出信息,或者對最后生成的二進制文件進行控制,以便通過加入不同數量和種類的調試代碼來為 今后的調試做好準備。和其它常用的編譯器一樣,GCC也提供了靈活而強大的代碼優(yōu)化功能,利用它可以生成執(zhí)行效率更高的代碼。


以文件example.c為例說明它的用法
0. arm-linux-gcc -o example example.c
   不加-c、-S、-E參數,編譯器將執(zhí)行預處理、編譯、匯編、連接操作直接生成可執(zhí)行代碼。
    -o參數用于指定輸出的文件,輸出文件名為example,如果不指定輸出文件,則默認輸出a.out
1. arm-linux-gcc -c -o example.o example.c
   -c參數將對源程序example.c進行預處理、編譯、匯編操作,生成example.o文件
   去掉指定輸出選項"-o example.o"自動輸出為example.o,所以說在這里-o加不加都可以
2.arm-linux-gcc -S -o example.s example.c
   -S參數將對源程序example.c進行預處理、編譯,生成example.s文件
   -o選項同上
3.arm-linux-gcc -E -o example.i example.c
   -E參數將對源程序example.c進行預處理,生成example.i文件(不同版本不一樣,有的將預處理后的內容打印到屏幕上)
   就是將#include,#define等進行文件插入及宏擴展等操作。
  
4.arm-linux-gcc -v -o example example.c
加上-v參數,顯示編譯時的詳細信息,編譯器的版本,編譯過程等。
5.arm-linux-gcc -g -o example example.c
-g選項,加入GDB能夠使用的調試信息,使用GDB調試時比較方便。
6.arm-linux-gcc -Wall -o example example.c
-Wall選項打開了所有需要注意的警告信息,像在聲明之前就使用的函數,聲明后卻沒有使用的變量等。
7.arm-linux-gcc -Ox -o example example.c
-Ox使用優(yōu)化選項,X的值為空、0、1、2、3
0為不優(yōu)化,優(yōu)化的目的是減少代碼空間和提高執(zhí)行效率等,但相應的編譯過程時間將較長并占用較大的內存空間。
8.arm-linux-gcc   -I /home/include -o example example.c
-Idirname: 將dirname所指出的目錄加入到程序頭文件目錄列表中。如果在預設系統(tǒng)及當前目錄中沒有找到需要的文件,就到指定的dirname目錄中去尋找。
9.arm-linux-gcc   -L /home/lib -o example example.c
-Ldirname:將dirname所指出的目錄加入到庫文件的目錄列表中。在默認狀態(tài)下,連接程序ld在系統(tǒng)的預設路徑中(如/usr/lib)尋找所需要的庫文件,這個選項告訴連接程序,首先到-L指定的目錄中去尋找,然后再到系統(tǒng)預設路徑中尋找。
10.arm-linux-gcc –static -o libexample.a example.c
靜態(tài)鏈接庫文件
 
gcc在命令行上經常使用的幾個選項是:
-c   只預處理、編譯和匯編源程序,不進行連接。編譯器對每一個源程序產生一個目標文件。


-o file  確定輸出文件為file。如果沒有用-o選項,缺省的可執(zhí)行文件的輸出是a.out,目標文件和匯編文件的輸出對source.suffix分別是source.o和source.s,預處理的C源程序的輸出是標準輸出stdout。


-Dmacro 或-Dmacro=defn   其作用類似于源程序里的#define。例如:% gcc -c -DHAVE_GDBM -DHELP_FILE="help" cdict.c其中第一個- D選項定義宏HAVE_GDBM,在程序里可以用#ifdef去檢查它是否被設置。第二個-D選項將宏HELP_FILE定義為字符串“help”(由于 反斜線的作用,引號實際上已成為該宏定義的一部分),這對于控制程序打開哪個文件是很有用的。


-Umacro   某些宏是被編譯程序自動定義的。這些宏通??梢灾付ㄔ谄渲羞M行編譯的計算機系統(tǒng)類型的符號,用戶可以在編譯某程序時加上 -v選項以查看gcc缺省定義了哪些宏。如果用戶想取消其中某個宏定義,用-Umacro選項,這相當于把#undef macro放在要編譯的源文件的開頭。


-Idir   將dir目錄加到搜尋頭文件的目錄列表中去,并優(yōu)先于在gcc缺省的搜索目錄。在有多個-I選項的情況下,按命令行上-I選項的前后順序搜索。dir可使用相對路徑,如-I../inc等。


-O   對程序編譯進行優(yōu)化,編譯程序試圖減少被編譯程序的長度和執(zhí)行時間,但其編譯速度比不做優(yōu)化慢,而且要求較多的內存。


-O2   允許比-O更好的優(yōu)化,編譯速度較慢,但結果程序的執(zhí)行速度較快。


-g   產生一張用于調試和排錯的擴展符號表。-g選項使程序可以用GNU的調試程序GDB進行調試。優(yōu)化和調試通常不兼容,同時使用-g和-O(-O2)選項經常會使程序產生奇怪的運行結果。所以不要同時使用-g和-O(-O2)選項。


-fpic或-fPIC   產生位置無關的目標代碼,可用于構造共享函數庫。


以 上是gcc的編譯選項。gcc的命令行上還可以使用連接選項。事實上,gcc將所有不能識別的選項傳遞給連接程序ld。連接程序ld將幾個目標文件和庫程 序組合成一個可執(zhí)行文件,它要解決對外部變量、外部過程、庫程序等的引用。但我們永遠不必要顯式地調用ld。利用gcc命令去連接各個文件是很簡單的,即 使在命令行里沒有列出庫程序,gcc也能保證某些庫程序以正確的次序出現。


gcc的常用連接選項有下列幾個:
-Ldir   將dir目錄加到搜尋-l選項指定的函數庫文件的目錄列表中去,并優(yōu)先于gcc缺省的搜索目錄。在有多個-L選項的情況下,按命令行上-L選項的前后順序搜索。dir可使用相對路徑。如-L../lib等。


-lname   在連接時使用函數庫libname.a,連接程序在-Ldir選項指定的目錄下和/lib,/usr/lib目錄下尋找該庫文件。在沒有使用-static選項時,如果發(fā)現共享函數庫libname.so,則使用libname.so進行動態(tài)連接。


-static   禁止與共享函數庫連接。


-shared   盡量與共享函數庫連接

關鍵字:arm  arm-linux-gcc  命令參數 引用地址:arm學習筆記011之arm-linux-gcc的命令參數介紹

上一篇:ARM學習筆記010之Gcc編譯新問題
下一篇:ARM學習筆記012之mini2440上電的啟動和初始化程序分析

推薦閱讀

機器人產業(yè)無疑已經成為國內最受關注的產業(yè)之一,不過,資本和創(chuàng)業(yè)者正逐漸回歸理性,2017年機器人企業(yè)注冊增長速度首次下滑。此外,機器人高端產業(yè)低端化、核心零部件遇瓶頸等問題也有明顯改善。工業(yè)和信息化部裝備工業(yè)司副司長羅俊杰日前表示,“目前我國機器人產業(yè)發(fā)展正經歷從數量擴展向高質量發(fā)展的攻堅階段。未來機器人特別是服務機器人可能呈現的趨...
前言:這個實驗比較簡單,就是對io口的配置。實驗現象up鍵用來打開led燈,down鍵用于關閉led燈,left鍵用于打開蜂鳴器,right用于關閉蜂鳴器。操作步驟1.初始化用到的io口void key_init(){ GPIO_InitTypeDef GPIO_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);//打開io口的時鐘 ...
隨著汽車變得越來越像智能手機,車內越做越大的中控屏也出現了各種各樣的應用程序與功能。有些聰明的車企已經看到這里隱藏的巨大商機,打算通過無線傳輸、應用程序以及空中OTA等下載服務來創(chuàng)造新收入。目前通過汽車下載服務淘到第一桶金并保持領先地位的車企是特斯拉,其提供的付費下載服務主要包括:每月9.99美元的Premium Connectivity套餐,能夠加強車...
6月18日,總投資約120億元建設的上汽時代、時代上汽先進動力電池產業(yè)化項目(二期) 在溧陽高新區(qū)開工,標志著上汽集團和寧德時代在動力電池領域的合作上升至一個新臺階。 上汽時代成立于2017年,是上汽集團與寧德時代合資建設的PACK工廠,雙方分別持股51%和49%,主要從事動力電池模塊和系統(tǒng)的開發(fā)、生產及銷售,主要供貨上汽集團。 同時,雙方還成立了另一...

史海拾趣

小廣播
設計資源 培訓 開發(fā)板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統(tǒng)推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發(fā)圈

 
機器人開發(fā)圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved