Linux 編譯與交叉編譯


在Linux環境中,所處平台不同,執行文件也就不同,同一執行文件不能在不同平台下使用

如在Ubnutu下 是用gcc編譯一個.c文件

gcc main.c -o main.out

-o 可以指定輸出文件名

但是這個mian.out文件只能在Ubnutu等其他X86構架的平台上運行,如果我們要在ARM上運行,就需要使用交叉編譯器。

交叉編譯器需要去根據系統構架去官網下載。

使用交叉編譯器的編譯一個可執行裸機文件:

流程

①、使用arm-linux-gnueabihf-gcc,將.c .s文件變為.o

arm-linux-gnueabihf-gcc -g -c main.c -o main.o

②、將所有的.o文件連接為elf格式的可執行文件。

arm-linux-gnueabihf-ld -Ttext 0X87800000 main.o -o main.elf

其中0x87800000為代碼起始執行地址。

③、將elf文件轉為bin文件。

arm-linux-gnueabihf-objcopy -O binary -S -g main.elf main.bin

也可以將elf文件轉為匯編,反匯編。

arm-linux-gnueabihf-objdump -D main.elf > main.dis

再使用imxdownload燒寫到存儲目錄

./imxdownload main.bin /dev/sdd

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM