<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > arm-linux-gcc/ld/objcopy/objdump參數

arm-linux-gcc/ld/objcopy/objdump參數

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò ) 收藏
arm-linux-gcc -wall -O2 -c -o $@ $<-o 只激活預處理,編譯,和匯編,也就是他只把程序做成obj文件-Wall 指定產(chǎn)生全部的警告信息-O2 編譯器對程序提供的編譯優(yōu)化選項,在編譯的時(shí)候使用該選項,可以使生成的執行文件的執行效率提高-c 表示只要求編譯器進(jìn)行編譯,而不要進(jìn)行鏈接,生成以源文件的文件名命名但把其后綴由 .c 或 .cc 變成 .o 的目標文件-S 只激活預處理和編譯,就是指把文件編譯成為匯編代碼arm-linux-ld直接指定代碼段,數據段,BSS段的起始地址-Ttest startaddr-Tdata startaddr-Tbss startaddr

示例:Arm-linux-ld –Ttext 0x0000000 –g led.o –o led_elf

本文引用地址:http://dyxdggzs.com/article/201611/319394.htm

使用連接腳本設置地址:Arm-linux-ld –Ttimer.lds –o timer_elf $^其中timer.lds 為連接腳本

完整的連接腳本格式:SECTIONS{…Secname start ALING(aling) (NOLOAD):AT(ldaddr){contents} > region:phdr=fill…..}

arm-linux-objcopy被用來(lái)復制一個(gè)目標文件的內容到另一個(gè)文件中,可用于不同源文件的之間的格式轉換示例:Arm-linux-objcopy –o binary –S elf_file bin_file

常用的選項:input-file , outflie輸入和輸出文件,如果沒(méi)有outfile,則輸出文件名為輸入文件名

2.-l bfdname或—input-target=bfdname用來(lái)指明源文件的格式,bfdname是BFD庫中描述的標準格式名,如果沒(méi)指明,則arm-linux-objcopy自己分析

3.-O bfdname 輸出的格式

4.-F bfdname 同時(shí)指明源文件,目的文件的格式

5.-R sectionname 從輸出文件中刪除掉所有名為sectionname的段

6.-S 不從源文件中復制重定位信息和符號信息到目標文件中

7.-g 不從源文件中復制調試符號到目標文件中

arm-linux-objdump查看目標文件(.o文件)和庫文件(.a文件)信息arm-linux-objdump -D -m arm led_elf > led.dis-D 顯示文件中所有匯編信息-m machine指定反匯編目標文件時(shí)使用的架構,當待反匯編文件本身沒(méi)有描述架構信息的時(shí)候(比如S-records),這個(gè)選項很有用??梢杂?i選項列出這里能夠指定的架構.

常用選項:

1.-b bfdname 指定目標碼格式2.—disassemble或者-d 反匯編可執行段3.—dissassemble-all或者-D 反匯編所有段4.-EB,-EL指定字節序5.—file-headers或者-f 顯示文件的整體頭部摘要信息6.—section-headers,--headers或者-h 顯示目標文件中各個(gè)段的頭部摘要信息7.—info 或者-I 顯示支持的目標文件格式和CPU架構8.—section=name或者-j name顯示指定section 的信息9.—architecture=machine或者-m machine 指定反匯編目標文件時(shí)使用的架構

1. 修改源代碼的頂層MakefileCC =$(CROSSCOM_PILE)gcc-->CC =$(CROSSCOM_PILE)gcc-g使成生的vmlinux中含有debug信息2. 所有生成.o的rule中再加一條CC-E-dD -C $< > /preprocessing/$(shell pwd)/$<生成預處理文件從這個(gè)文件里面能很容易找到c源文件的宏定義3. objdump -h vmlinux > vmlinux.txt顯示linux 內核段信息,如段的開(kāi)始虛擬地址,段的長(cháng)度4.objdump -S -l -z vmlinux > vmlinux.txt反匯編vmlinux到vmlinux.txt,vmlinux.txt含有匯編和c源文件的混合代碼,看起來(lái)很方便。而且能一步步看linux怎么一步步運行的。5. objdump -S -l -z -j xxxx(section name) vmlinux > vmlinux.txt反匯編linux內核段xxxx到文件vmlinux.txt中。6. objdump -x vmlinux > x.txtvmliux中所有段的頭信息,其中包口vmlinux的入口地址等7. objdump --debugging vmlinux > debugging.txt很多有用的debug信息,如函數名,結構體定義等我覺(jué)的用根據以上信息,ultraedit看很方便。尤其在vmlinux.txt中選中文件名,用ultraedit右鍵的open能馬上打開(kāi)文件,很方便。

objdump -j .text -Svmlinux > vmlinux.txt-S盡可能反匯編出源代碼,尤其當編譯的時(shí)候指定了-g這種調試參數時(shí),效果比較明顯。隱含了-d參數。

-l用文件名和行號標注相應的目標代碼,僅僅和-d、-D或者-r一起使用使用-ld和使用-d的區別不是很大,在源碼級調試的時(shí)候有用,要求編譯時(shí)使用了-g之類(lèi)的調試編譯選項。

[-l | --line-numbers][-S | --source]混合匯編[-z | --disassemble-zeroes][-j section | --section=section][--prefix-addresses]



關(guān)鍵詞: armlinuxgc

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>