<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入門(mén)篇之(二)工具

ARM入門(mén)篇之(二)工具

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò ) 收藏
(1) 交叉工具鏈,可以理解為交叉工具集

?交叉,指在宿主機上編寫(xiě)編譯好代碼,生成目標機能夠運行的格式文件,通過(guò)數據線(xiàn)連接宿主機與目標機,從宿主機上下載程序到目標機內

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

工具鏈,就是交叉?編譯器(arm-linux-gcc),交叉連接器(arm-linux-ld),交叉轉換器(arm-linux-objcopy),交叉ELF文件閱讀器(arm-linux-readelf),交叉反匯編器(arm-linux-objdump)等工具的集合

?

(2)Makefile管理

?makefile,描述了整個(gè)程序的編譯,鏈接等的規則

包括:什么樣的源文件需要編譯,鏈接;使用什么工具編譯,鏈接;編譯,鏈接時(shí)依賴(lài)哪些文件;?最后產(chǎn)生我們先要的最終執行文件

而上面這一個(gè)過(guò)程只要你編寫(xiě)好makefile這個(gè)文件,再用make命令就可一步生成最終想要的可執行文件?

makefile由規則和變量構成

規則:描述了如何通過(guò)依賴(lài)文件,使用什么工具命令,最終生成?目標文件

格式如下:

目標:依賴(lài)??

[Tab]命令

例如:

start.o:start.S

?[Tab]arm-linux-gcc -g -o start.o -c start.S

?變量:

系統定義的變量:($@)代表目標,($^)代表所有依賴(lài),($<)代表第一個(gè)依賴(lài),(%)通配符?

例如上面的例子用變量就是:

%.o:%.S

[Tab]arm-linux-gcc -g -o $@ -c $^??

默認情況下,make命令會(huì )自動(dòng)找到文件名叫makefile的文件,當你把makefile改名后,可以用命令:

make -f 文件名?

(3)鏈接腳本(.lds)

段:一個(gè)可執行程序通常由代碼段,數據段。bss段構成,所以在腳本文件中也要體現出來(lái)

?鏈接腳本大概如下:

?OUTPUT_FORMAT("elf32littlearm",“elf32littlearm”,“elf32littlearm”)

指定輸出文件格式為elf,32位,小端,arm指令

OUTPUT_ARCH(arm)

?指定輸出平臺為ARM

ENTRY(_start)

指定入口_start

??SECTIONS{

. = 0x50000000 設置程序開(kāi)始地址(OK6410首地址)

. = ALIGN(4) 代碼四字節?對齊

?.text: 指定代碼段

{

start.o(.text)? 第一個(gè)部分代碼為Start.o

*(.text)? 其他部分代碼放在start.o代碼后面

}?

.= ALIGN(4)?

? .data:{ *(.data) }? 數據段

. = ALIGN(4)

bss_start = . ? bss段的開(kāi)始位置

.bss:{ *(.bss) } bss段

bss_end = .? bss段的結束位置

}?

?



關(guān)鍵詞: ARM入門(mén)工

評論


技術(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>