乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      交叉編譯工具鏈

       袁先森lemon 2019-04-15
      1、嵌入式開發(fā)模型-交叉開發(fā)

          在嵌入式開發(fā)過程中有宿主機(jī)目標(biāo)機(jī)的角色之分:宿主機(jī)是執(zhí)行編譯鏈接嵌入式軟件的計算機(jī);目標(biāo)機(jī)是運行嵌入式軟件的硬件平臺。

                    clip_image002

      在宿主機(jī)執(zhí)行編譯的流程如下:

                       clip_image004

      2、交叉編譯工具鏈詳解

      參考:

      http://www./files/doc/docbook/cross_compile/release/html/cross_compile.html

      3、制作交叉編譯工具

      參考:

      http://www./files/doc/docbook/crosstool_ng/release/html/crosstool_ng.html

      4、交叉編譯工具

      arm-linux-gcc

      arm-linux-addr2line

      arm-linux-objcopy

      arm-linux-readelf

      arm-linux-ar

      arm-linux-ld

      arm-linux-objdump

      arm-linux-size

      arm-linux-nm

      arm-linux-strip

      arm-linux-cc

      arm-linux-gprof

      arm-linux-c++filt

      arm-linux-as

      arm-linux-cpp

      arm-linux-gccbug

      arm-linux-ldd

      arm-linux-populate

      arm-linux-strings

      arm-linux-c++

      arm-linux-g++

      arm-linux-gcov

      arm-linux-ranlib

      如何查看各交叉編譯工具的幫助信息:

      例如查看arm-linux-gcc的幫助信息:

          $ arm-linux-gcc --help

      常用的交叉編譯工具:

      4.1 交叉編譯器 arm-linux-gcc

          和X86平臺下的gcc的基本用法用法是完全一樣的;不同之處:標(biāo)準(zhǔn)的gcc所引用的頭文件路徑為 /usr/include/stdio.h,arm-linux-gcc所引用的頭文件路徑為其安裝路徑下,如 /usr/local/armtools/4.5.1/bin/..

      4.2 交叉鏈接器 arm-linux-ld

          arm-linux-ld命令是ARM平臺下的交叉鏈接器,把程序鏈接成可以在ARM平臺下運行。

          用法: arm-linux-ld -Tled.lds led.o -o led.elf

                     把led.o鏈接成led.elf文件;led.lds是鏈接器腳本,

      4.3 交叉elf文件工具 arm-linux-readelf

      查看.elf格式文件: arm-linux-readelf -a led.elf

                                -a 參數(shù)是查看.elf文件的所有內(nèi)容

      注意:編譯的程序運行不了有兩個原因:一個是要看運行平臺對不對,第二個是要看處理器的大小端跟編譯的程序的大小端是否對應(yīng),可以使用arm-linux-readelf -a xxx.elf 命令查看編譯出來的程序大小端情況和程序運行平臺。

          如下圖所示,編譯后的程序只能運行在小端(little endian)的處理器上,其運行平臺Machine是ARM。絕大多數(shù)ARM處理器都是小端的。

         clip_image006

          查看程序運行平臺還可以使用file xxx (xxx為編譯后可執(zhí)行文件) 命令查看。

          如一個應(yīng)用程序不能執(zhí)行,排除了運行平臺和大小端的情況后,還有可能是庫不對。

      使用arm-linux-readelf -d xxx (xxx為編譯后可執(zhí)行文件)查看運行庫;如hello程序運行庫為libc.so.6,如果開發(fā)板上沒有這個庫,程序是運行不了的。

          clip_image008

      4.4 交叉反匯編器 arm-linux-objdump

      把hello.c文件編譯成hello可執(zhí)行文件:arm-linux-gcc hello.c -o hello

      用法arm-linux -objdump -D -S hello >dump

               把hello可執(zhí)行文件反匯編后輸入保存到dump文件中。

               -D -S 是反匯編參數(shù),>dump 把hello反匯編后的內(nèi)容保存到dump文件中

            clip_image010

      注意: 在編譯hello時沒有使用-g參數(shù),反匯編后的代碼和原來C代碼對應(yīng)不起來。我們可以在編譯hello時使用-g參數(shù):

          先把hello.c文件編譯成hello可執(zhí)行文件:arm-linux-gcc -g hello.c -o hello;運行arm-linux -objdump -D -S hello >dump命令,打開dump文件可以看到

             clip_image012

      4.5文件格式轉(zhuǎn)換器 arm-linux-objcopy

          使用arm-linux-objcopy命令可以把ELF格式的文件轉(zhuǎn)換成二進(jìn)制文件。

          文件格式轉(zhuǎn)換的原因:elf格式的文件不能直接在ARM上運行(ARM只能運行二進(jìn)制格式的文件);

          用法:arm-linux-objcopy -O binary led.elf led.bin

                  把led.elf格式的文件轉(zhuǎn)換成led.bin二進(jìn)制文件。

      4.6庫管理器arm-linux-ar

          arm-elf-ar將多個可重定位的目標(biāo)模塊歸檔為一個函數(shù)庫文件。采用函數(shù)庫文件,應(yīng)用程序能夠從該文件中自動裝載要參考的函數(shù)模塊,同時將應(yīng)用程序中頻繁調(diào)用的函數(shù)放入函數(shù)庫文件中,易于應(yīng)用程序的開發(fā)管理。arm-elf-ar支持ELF格式的函數(shù)庫文件.

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多