交叉工具鏈

2021-08-09 13:36:44 字數 1596 閱讀 9843

理,但由於嵌入式軟體的執行平台不是本地,所以要做一些特殊處理,讓編譯環境信賴的類庫脫離本地信

賴,使用嵌入式平台的類庫來進行鏈結,處理這一過程就叫作交叉編譯工具鏈。

機是執行嵌入式軟體的硬體平台。

-o 只啟用預處理,編譯,和彙編,也就是他只把程式做成obj檔案 

-wall 指定產生全部的警告資訊

-o2 編譯器對程式提供的編譯優化選項,在編譯的時候使用該選項,可以使生成的執行檔案的執行效率提高

-c 表示只要求編譯器進行編譯,而不要進行鏈結,生成以原始檔的檔名命名但把其字尾由 .c 或 .cc 變成 .o 的目標檔案

-s 只啟用預處理和編譯,就是指把檔案編譯成為彙編**

-static 禁止與共享函式庫連線

-shared 盡量與共享函式庫連線

-t選項是ld命令中比較重要的乙個選項,可以用它直接指明**的**段、資料段、bbs段,對於複雜的連線,可以專門寫乙個指令碼來告訴編譯器如何連線。

-tbss address set address of .bss section

-tdata address set address of .data section

-ttext address set address of .text section

示例:$ld -ttext=0x33000000 led.o -o led.elf

arm-linux-ld -tbeep.lds start.o beep.o -o beep.elf

被用來複製乙個目標檔案的內容到另乙個檔案中,可用於不同原始檔的之間的格式轉換

示例:arm-linux-objcopy –o binary –s elf_file bin_file

常用的選項:

input-file , outflie

輸入和輸出檔案,如果沒有outfile,則輸出檔名為輸入檔名

-l bfdname或—input-target=bfdname

用來指明原始檔的格式,bfdname是bfd庫中描述的標準格式名,如果沒指明,則arm-linux-objcopy自己分析

-o bfdname 輸出的格式

-f bfdname 同時指明原始檔,目的檔案的格式

-r sectionname 從輸出檔案中刪除掉所有名為sectionname的段

-s 不從原始檔中複製重定位資訊和符號資訊到目標檔案中

-g 不從原始檔中複製除錯符號到目標檔案中

-a 應用程式    可檢視檔案執行[架構](大小端、共享庫等資訊。針對編

譯時加上"-static"選項的應用程式。

-d 應用程式 可檢視應用程式的動態鏈結庫

檢視目標檔案(.o檔案)和庫檔案(.a檔案)資訊

arm-linux-objdump -d -m arm beep.elf > beep.dis

-d 顯示檔案中所有彙編資訊

-m machine

指定反彙編目標檔案時使用的架構,當待反彙編檔案本身沒有描述架構資訊的時候(比如s-records),這個選

安裝交叉工具鏈

使用國嵌提供的工具包arm tools.tar.gz,首先解壓 tar xvzf arm tools.tar.gz cd arm tools tar xvzf arm linux gcc 4.3.2.tgz c 指定解壓到根目錄去 解壓到 usr local arm 4.3.2 還需修改環境變數 v...

八 交叉工具鏈

1.何為交叉工具鏈?交叉工具的集合 2.交叉工具 可以用file命令從本質上檢視用交叉工具和普通工具編譯出來的檔案的屬性是不同的,他們的執行平台不同 3.交叉開發模型 宿主機 目標機的硬體平台不一樣,在x86平台上產生用於其他平台的程式的過程就是交叉開發 4.交叉編譯器 arm linux gcc ...

安裝交叉工具鏈

本文以openwrt x86的工具鏈為例 製作openwrt 的工具鏈 參考 tar xvf openwrt toolchain x86 generic gcc 4.8 linaro uclibc 0.9 33.2 linux i686 tar.bz2cd openwrt toolchain x86...