免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

嵌入式C語言編譯器

1.嵌入式C語言編譯器

1.1 GCC與gcc

上述兩者的區別:
GCC(GUN Compiler Colletion),是指GUN編譯器集合包含眾多語言得到編譯器如C語言(gcc),C++(g++),Java語言(jdk)、D語言(gdc)、等
gcc 則指的是單純的C語言編譯器
當代的嵌入式開發已經和傳統的嵌入式開發不同,硬件性能的提升使其越來越接近桌面開發,使用的開發語言也越來越多樣,內核和驅動開發使用C語言,應用開發使用gcc/g++/gdc等。

創新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、成都網站設計、成都外貿網站建設、平利網絡推廣、微信小程序開發、平利網絡營銷、平利企業策劃、平利品牌公關、搜索引擎seo、人物專訪、企業宣傳片、企業代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;創新互聯為所有大學生創業者提供平利建站搭建服務,24小時服務熱線:13518219792,官方網址:m.newbst.com

1.2交叉編譯

兩種開發模式:
A.非嵌入式開發:A(類)機編寫(源代碼)、編譯得到可執行程序,發布給A(類)機運行。
B.嵌入式開發 :A(類)機編寫(源代碼)、編譯得到可執行程序,發布給B(類)機運行。
為何使用交叉編譯
嵌入式產品由于資源受限,不能直接在嵌入式產品上進行編程,所以選擇在PC主機上進行源碼編寫和編譯,最終生成在嵌入式設備上運行的程序。
交叉編譯可以用高性能機器為低性能機器開發軟件(包括裸機軟件、系統級和應用級軟件)
交叉編譯特點:
必須使用專用的交叉編譯工具鏈。由于可執行程序不能本地運行調試,因此必須配合一定手段(專用調試器、JTAG調試器、USB下載、串口下載、SD啟動、網絡共享等)將可執行程序加載到目標嵌入式設備上運行及調試。
gcc如何進行交叉編譯?
配置目標主機的編譯工具鏈(如arm-linux),配置工具鏈的具體版本。
根據具體的目標代碼選擇相應的工具鏈版本
正確使用關于硬件體系結構的特殊編譯選項
大型企業嵌入式開發環境:
嵌入式C語言編譯器

1.3編譯過程

我們通常所將的編譯器實際上是指廣義的編譯器,包含下面四個部分:
嵌入式C語言編譯器
整個編譯過程如下面所示:
嵌入式C語言編譯器
預處理器完成:頭文件原地展開、宏定義替換、注釋刪除工作。
編譯器(狹義上的):完成各種語言到目標平臺的會變文件的翻譯工作。
匯編器:將平臺回避那文件編譯成最終的二進制文件(.O文件)
鏈接器:將最終的二進制文件按照連接腳本的內容,鏈接稱為最中的可執行文件Linux中為elf文件。
整個過程:源碼.c->(預處理)->預處理過的.i源文件->(編譯)->匯編文件.S->(匯編)->目標文件.o->(鏈接)->elf可執行程序

1.4多語言混合開發

多語言混合開發時當×××發中常見的開發方式,優勢在于節省人力成本,提高開發效率。
方式一:目標平臺匯編文件的統一
嵌入式C語言編譯器
行業案例:
嵌入式C語言編譯器
方式二:目標平臺二進制文件的統一
嵌入式C語言編譯器
行業案例:
嵌入式C語言編譯器
方式三:利用進程間通信進行協同
嵌入式C語言編譯器
行業案例:
嵌入式C語言編譯器

1.5 gcc 編譯選項

預處理指令: gcc -E file.c -o file.i
編譯指令 : gcc -S file.i -o file.s
匯編指令 : gcc -c file.s -o file.o

生成映射文件: gcc test.c -Wl,-Map=test.map (注意逗號后面沒有空格)
宏定義:gcc test.c -D 'TEST="PENGCHAO"' gcc test.c -D TEST=110
獲取系統頭文件路徑; gcc -v file.c

獲取目標的完整依賴關系:gcc -M test.c
獲取目標的部分依賴關系:gcc -MM test.c

制定庫文件及庫文件的搜索路徑
-L 指令庫文件搜索路徑
-l 指定庫文件名
gcc test.c -L -lfunc

靜態庫生成命令:ar -rc libfunc.a func.o
動態庫生成命令:gcc func.c -o func.o -c -fPIC
gcc -o libfunc.so func.o -shared
nm命令也很有用,它可以用來查看一個.a文件中都有哪些符號
ldd命令:作用是可以在一個使用了共享庫的程序執行之前解析出這個程序使用了哪些共享庫,并且查看這些共享庫是否能被找到,能被解析(決定這個程序是否能正確執行)。
注意:動態鏈接庫運行時需要被加載(運行時環境在執行test程序的時候發現他動態鏈接了libfunc.so,于是乎會去固定目錄(/user/lib)嘗試加載libfunc.so,如果加載失敗則會打印:error while loading shared libraries: libfunc.so: cannot open shared object file: No such file or directory
解決辦法:
A.將動態庫文件拷貝到系統庫文件目錄(不推薦)
B.將動態庫文件所在目錄導出到環境變量LD_LIBRARY_PATH,export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:path_name

分享文章:嵌入式C語言編譯器
瀏覽地址:http://m.newbst.com/article20/ghogjo.html

成都網站建設公司_創新互聯,為您提供網站營銷定制開發網站制作品牌網站建設關鍵詞優化營銷型網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設