第7章嵌入式Linux開發(fā)環(huán)境ppt課件_第1頁
第7章嵌入式Linux開發(fā)環(huán)境ppt課件_第2頁
第7章嵌入式Linux開發(fā)環(huán)境ppt課件_第3頁
第7章嵌入式Linux開發(fā)環(huán)境ppt課件_第4頁
第7章嵌入式Linux開發(fā)環(huán)境ppt課件_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第7章 嵌入式Linux開發(fā)環(huán)境第7章 嵌入式Linux開發(fā)環(huán)境7.1 GNU Tools7.2 工程管理7.3 調試器7.1 GNU ToolsGNU Tools綜述GCC 編譯與鏈接GCC 工具引見C言語庫ELF文件格式GNU Tools綜述 GNU Tools是Linux環(huán)境下的開發(fā)工具,用于代碼的生成。GNU Tools的重要組成部分是GCC。GCC 是GNU Compiler Collection 的縮寫,是一個非常優(yōu)秀的跨平臺編譯器集合,支持x86、ARM、MIPS 和PowerPC 等多種目的平臺,支持C、C+、Java、ADA、Fortran 和Pascal 等多種高級言語。G

2、NU Tools綜述文件類型擴展名文件說明文本文件*.c C語言源文件*.C / *.cxx / *.ccC+語言源文件*.i預處理后的C語言源文件*.ii預處理后的C+語言源文件*.s *.S匯編語言*.h頭文件二進制文件.o目標文件.so動態(tài)庫.a靜態(tài)庫GNU Tools綜述工具名稱說明asGNU匯編器。用以將處理器的匯編代碼轉換成可執(zhí)行代碼,并存儲到目標文件.o文件中l(wèi)dGNU鏈接器。用于將一個或多個目標文件.o、庫組合成一個可執(zhí)行程序;或者生成靜態(tài)庫和動態(tài)庫。ar歸檔工具,可以將多個文件組合成一個大文件,并且可以讀取原始文件的內容。stripe去除文件中的符號nm用以顯示目標文件中的符

3、號objectcopy轉換二進制代碼的工具objdump顯示目標文件的反匯編工具readelf顯示ELF文件中的各種信息string顯示文件中的可打印字符ranlib產生歸檔文件的系引,并將其保存到歸檔文件中,系引同時列出歸檔文件各成員所定義的可重分配目標文件。addr2line可以將一個可執(zhí)行程序的地址映射到源文件的對應行。Gprof顯示程序調用段的各種數據GNU Tools綜述 GNU Tools是Linux環(huán)境下的開發(fā)工具,用于代碼的生成。GNU Tools的重要組成部分是GCC。GCC 是GNU Compiler Collection 的縮寫,是一個非常優(yōu)秀的跨平臺編譯器集合,支持x8

4、6、ARM、MIPS 和PowerPC 等多種目的平臺,支持C、C+、Java、ADA、Fortran 和Pascal 等多種高級言語。GNU Tools綜述 預處置 編譯 匯編 鏈接GCC 編譯與鏈接# gcc hello.c -o hello# ./helloHello world!預處置# gcc -E hello.c -o hello.i編譯和匯編# gcc -c hello.i -o hello.o鏈接# gcc hello.o -o hello一步完成:分布完成:/* hello.c */#include int main(void) printf (Hello world!n )

5、; return 0;GCC 編譯與鏈接一步完成:# gcc foo1.c foo2.c -o foo源程序: foo1.c foo2.c多步完成:# gcc -c foo1.c -o foo1.o# gcc -c foo2.c -o foo2.o# gcc foo1.o foo2.o -o foo歸檔工具ar ar 工具用于建立、修正、提取歸檔文件archive。一個歸檔文件是包含多個文件的單個文件(也可以把它以為是一個庫文件),其構造保證了可以從中檢索并得到原始的被包含文件稱做此歸檔文件的成員。被包含的原始文件的內容、方式權限、時間戳、一切者和組等屬性都保管在歸檔文件中,并且可在提取后,恢

6、復原始文件的相關屬性。ar - p mod relpos archive member .移除符號工具strip strip工具用于去除文件中的符號。運用strip既可以移除目的中文件中的某個符號,也可以移除整個節(jié)。運用strip,至少要有一個輸入文件,也可以輸入一個文件列表。 strip -F bfdname |-target=bfdname -I bfdname |-input-target=bfdname -O bfdname |-output-target=bfdname -s|-strip-all -S|-g|-d|-strip-debug-K symbolname |-keep-s

7、ymbol=symbolname -N symbolname |-strip-symbol=symbolname -x|-discard-all -X |-discard-locals-R sectionname |-remove-section=sectionname -o file -p|-preserve-dates-v |-verbose -V|-version -helpobjfile.列出文件符號工具nm nm工具的功能是列出目的文件中的符號,這樣可以協(xié)助程序員分析可執(zhí)行程序,獲得目的文件中的符號信息和它的屬性。 nm -a | -debug-syms -g | -extern-o

8、nly -B -C | -demangle -D | -dynamic -s | -print-armap -A | -o | -print-file-name -n | -v | -numeric-sort -p | -no-sort -r | -reverse-sort -size-sort -u | -undefined-only -t radix | -radix= radix -P | -portability -target= bfdname -f format | -format= format -defined-only -l | -line-numbers -no-deman

9、gle -V | -version -help object-file .目的文件復制工具objcopy objcopy工具用來把某種格式的目的文件內容進展轉換,并輸出為另一種格式的目的文件。objcopy運用GNU BFD庫讀寫目的文件,經過這個BFD庫,objcopy可以以一種不同于源目的文件的格式來生成目的文件。objcopy -F bfdname | -target= bfdname -I bfdname | -input-target=bfdname -O bfdname | -output-target= bfdname -S | -strip-all -g | -strip-de

10、bug -K symbolname | -keep-symbol= symbolname -N symbolname | -strip-symbol= symbolname -L symbolname | -localize-symbol= symbolname -W symbolname | -weaken-symbol= symbolname -x | -discard-all -X | -discard-locals -b byte | -byte= byte -i interleave | -interleave= interleave -R sectionname | -remove

11、-section= sectionname -p | -preserve-dates -debugging -gap-fill= val -pad-to= address -set-start= val -adjust-start= incr -change-address= incr -change-section-address= section=,+,- val -change-warnings -no-change-warnings -set-section-flags= section= flags -add-section= sectionname= filename -chang

12、e-leading char -remove-leading-char -weaken -v | -verbose -V | -version -help input-file outfile目的文件信息工具objdump objdump 工具用于顯示一個或多個目的文件的信息。由其選項來控制顯示哪些特定的信息。objdump -a | -archive-headers -b bfdname | -target= bfdname -debugging -C | -demangle -d | -disassemble -D | -disassemble-all -disassemble-zeroe

13、s -EB | -EL | -endian=big | little -f | -file-headers -h | -section-headers | -headers -i | -info -j section | -section= section -l | -line-numbers -S | -source -m machine | -architecture= machine -p | -private-headers -r | -reloc -R | -dynamic-reloc -s | -full-contents -stabs -t | -syms -T | -dynam

14、ic-syms -x | -all-headers -w | -wide -start-address= address -stop-address= address -prefix-addresses -noshow-raw-insn -adjust-vma= offset -version -help object-file.C言語庫 在嵌入式程序的C言語程序的開發(fā)中,C言語庫是運用程序所依賴的根底。在C言語庫中,提供一些C言語中程序運轉的根底,包括規(guī)范的庫函數,如:printf、malloc、字符串處置等根本函數操作。ELF文件格式 ELFExecutable and Linking F

15、ormat,可執(zhí)行鏈接格式是UNIX系統(tǒng)實驗室USL作為運用程序二進制接口Application Binary Interface,ABI而開發(fā)和發(fā)布的。工具接口規(guī)范委員會(TIS)選擇了正在開展中的ELF規(guī)范作為任務在32位INTEL體系上不同操作系統(tǒng)之間可移植的二進制文件格式。 ELF文件格式包括三種主要的類型: 可執(zhí)行文件 可重定向文件*.o 共享庫*.soELF文件格式 ELF文件從鏈接器linker的角度看,是一些節(jié)sections的集合;從程序裝載器loader的角度看,它是一些段segments的集合。 ELF格式的程序和共享庫具有一樣的構造,只是段的集合和節(jié)的集合上有些不同。7

16、.2工程管理工程管理工具Make與Makefile版本控制工程管理工具Make與Makefile/* main.c */#include hello.hint main (int argc,char* argv) hello(argc,argv); return 0;/* hello.c */#include int hello(int argc,char* argv) int i; printf (Hello world!n); for(i = 0;i argc; i+) printf(argv%d = %sn,i,argvi); return 0;/* hello.h */int hell

17、o(int argc,char* argv);工程管理工具Make與Makefile# MakefileCC:= gccHEAD:= hello.hSRC:= hello.c main.c OBJS:= hello.o main.oTT:= helloINC = .CFLAGS = -pipe -w -I$(INC)LDFLAGS = -Wallall:$(TT)$(TT):$(OBJS)$(CC) $(LDFLAGS) $(OBJS) -o $%.o:%c$(CC) $(CFLAGS) -c $ -o $ clean:rm -f *.o $(TT)工程管理工具Make與Makefile# m

18、akegcc -pipe -w -I. -c -o hello.o hello.cgcc -pipe -w -I. -c -o main.o main.cgcc -Wall hello.o main.o -o hello# make cleanrm -f *.o hello變量定義含義CC:= gcc 指定編譯使用的工具,本編譯的目標為x86的體系可執(zhí)行文件,因此使用gcc,如果需要變異arm體系的可執(zhí)行文件,需要將gcc更改為arm-linux-gcc;OBJS:= hello.o main.o指定本工程所有的目標文件,在后面的規(guī)則$(TT):$(OBJS)使用;TT:= hello工程最終

19、需要得到的可執(zhí)行文件INC = .包含頭文件,本工程只包含了當前路徑.CFLAGS = -pipe -w -I$(INC)編譯選項,在語句$(CC) $(CFLAGS) -c $ -o $中使用LDFLAGS = -Wall 鏈接選項,在語句$(CC)$(LDFLAGS) $(OBJS) -o $中使用版本控制 CVS是一種廣泛運用的、開源的、透明于網絡 、程序代碼版本的分合控制。明于網絡的版本控制系統(tǒng)。CVS支持程序代碼版本的儲存與維護、程序代碼版本的追蹤回溯、支持多人協(xié)作開發(fā)工程等。不過這個廣為運用的版本控制工具還有不少問題,包括中文支持和二進制文件的處置都有或多或少的問題。SVN的出現改動了這一現狀。 SVN保管大多數CVS 特性,而且進一步支持更多的特性,包括版本化管理目錄、重命名和文件meta-data、提交是真實的原子操作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論