交叉工具鏈:
arm-linux-gcc:交叉編譯器
arm-linux-ld:交叉聯結器
arm-linux-readelf:交叉elf檔案工具
arm-linux-objdump:交叉反彙編器
arm-linux-objcopy:交叉轉換器
-a 是顯示該檔案的資訊
-o bfdname 輸出的格式
-f bfdname 同時指明原始檔,目的檔案的格式
-r sectionname 從輸出檔案中刪除掉所有名為sectionname的段
-s 盡可能反彙編出源**
-d 顯示檔案中所有彙編資訊,反彙編
-c 只編譯不鏈結
-g 附加除錯資訊:c和彙編能對應起來
arm-linux-readelf -d hello 檢視這個應用程式需要那些庫
file 這個檔案,可以看到這個檔案在什麼平台上執行(x86或者arm等等)
arm-linux-objdump:反彙編工具
arm-linux-objcopy -o binary led.elf led.bin:-o是指定輸出什麼格式的檔案,是binary(二進位制),後面跟上輸入檔案和輸出檔案
makefile:make工作主要依賴於乙個叫做makefile的檔案,這個檔案描述了整個程式的編譯、連線等規則。其中包括:那些原始檔需要編譯以及如何編譯,如何最後產生我們想要的執行檔案。
目標:依賴
命令all: led.o
arm-linux-ld -tled.lds -o led.elf led.o
arm-linux-objcopy -o binary led.elf led.bin
led.o : led.s
arm-linux-gcc -g -o led.o -c led.s
.phony: clean
clean:
rm *.o led.elf led.bin
make 後面跟 你想要的那個檔案,就會去執行makefile裡的只生成你需要檔案的命令
make後面不接,就執行makefile裡的第一條命令,所以稱第一條規則裡的就是最終目標
去回顯make -f file
all: start.o main.o mmu.o led.o button.o interrupt.o
arm-linux-ld -tgboot.lds -o gboot.elf $^
arm-linux-objcopy -o binary gboot.elf gboot.bin
%.o : %.s
arm-linux-gcc -g -c $^
%.o : %.c
arm-linux-gcc -g -c $^
.phony: clean
clean:
rm *.o *.elf *.bin
交叉編譯和交叉工具鏈(一)
一 交叉編譯簡介 1 什麼是交叉編譯 1.1 本地編譯 解釋什麼是交叉編譯之前,先要明白乙個概念 本地編譯 我們之前常見的軟體開發,都是屬於本地編譯 在當前的pc下,x86的cpu下,直接編譯出來程式,可以執行的程式 或者庫檔案 其可以直接在當前的環境,即x86的cpu下,當前電腦中,執行。此時的編...
交叉工具鏈
理,但由於嵌入式軟體的執行平台不是本地,所以要做一些特殊處理,讓編譯環境信賴的類庫脫離本地信 賴,使用嵌入式平台的類庫來進行鏈結,處理這一過程就叫作交叉編譯工具鏈。機是執行嵌入式軟體的硬體平台。o 只啟用預處理,編譯,和彙編,也就是他只把程式做成obj檔案 wall 指定產生全部的警告資訊 o2 編...
安裝交叉工具鏈
使用國嵌提供的工具包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...