嵌入式開發的時候,我們的編譯乙個*.s檔案,並最終生成bin檔案,編譯命令大致如下:
cc=arm-softfloat-linux-gnu-gcc
ld=arm-softfloat-linux-gnu-ld
objcopy=arm-softfloat-linux-gnu-objcopy
$(cc) -g $(cflag) -c boot.s #先將boot.s檔案生成boot.o
$(ld) -g -bstatic -t$(ldfile) -ttext 0x12345600 boot.o --start-group -map boot.map -o boot.elf #再將boot.o生成boot.elf, boot.elf通常就是可執行檔案,類似於gcc -o test test.c 中的test檔案,在linux shell下輸入./test就可以執行。
$(objcopy) -o binary boot.elf boot.bin #接著將boot.elf->boot.bin,這樣可以縮小**尺寸。
執行arm-softfloat-linux-gnu-objdump -h boot.elf 可以檢視該檔案的資訊,但是如果變成
arm-softfloat-linux-gnu-objdump -h boot.bin會提示錯誤,為了看boot.bin檔案資訊,輸入:
arm-softfloat-linux-gnu-objdump -h -b binary -m arm boot.bin就可以了。哈哈我也是現學了一招,其中引數-h可以被替換成為-d, -s, -s等等,請用arm-softfloat-linux-gnu-objdump --help檢視器中表示的意義。
說說elf bin 檔案區別:
我們有了linux os,為了執行可執行檔案,他們是遵循elf格式的,通常gcc -o test test.c,生成的test檔案就是elf格式的,這樣就可以執行了。
arm-softfloat-linux-gnu-objcopy命令將去掉elf格式的東西,僅僅保留最純的彙編(不知道如何解釋),
在embedded中,如果上電開始執行,沒有os系統,如果將elf格式的檔案燒寫進去,包含一些elf格式的東西,arm執行碰到這些指令,就會導致失敗,如果用arm-softfloat-linux-gnu-objcopy生成純粹的彙編,程式就可以一步一步執行。
聯絡[email protected]就可以了。
Linux 檔案檢視命令和檔案內容檢視
linux 中存在大量的檔案,根據自身需求去查詢檔案時,需要了解檔案型別,能夠更方便的查詢檔案。當然,實現檢視檔案基本資訊和內容的前提是知道文件的具體位置。檔案型別 普通檔案 d 目錄檔案 b 裝置檔案 塊裝置 c 裝置檔案 字元裝置 l 鏈結檔案 s 套接字檔案 p 管道檔案 檔案檢視命令 ls ...
Linux 檔案檢視
var log messages 包括整體系統資訊,其中也包含系統啟動期間的日誌。此外,mail,cron,daemon,kern和auth等內容也記錄在var log messages日誌中。var log dmesg 包含核心緩衝資訊 kernel ring buffer 在系統啟動時,會在螢幕...
Linux 檢視檔案
cat more less head tail cat 是乙個文字檔案 檢視 和 連線 工具,通常與more搭配使用,與more不同的是cat可以合併檔案。檢視乙個檔案的內容,用cat比較簡單,就是cat後面直接接檔名。語法結構 cat 選項 檔案 選項 a,show all 等價於 vet b,n...