makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)詳解



在linux中輸入vi Makefile 來實現創建Makefile文件

注意:命令行前必須加TAB鍵

例如:將兩個文件led.c和crt0.S匯編文件,制作一個Makefile文件

1 1 led.bin : crt0.S led.c 2 2 arm-linux-gcc -c -o crt0.o crt0.c 3 3 arm-linux-gcc -c -o led.o led.c 4 4 arm-linux-ld -Ttext 0x00000000 -g crt0.o led.o -o led_elf 5 5 arm-linux-objcopy -O binary -S led_elf led.bin 6 6 arm-linux-objdump -D -m arm led_elf > led.dis 7 7 clean: 8 8 rm -f led_elf led.dis led.bin *.o

 

 led.bin : crt0.S led.c 指的是依賴關系,led.bin是目標文件,:后面是依賴文件

 

arm-linux-gcc  編譯選項

  • -o  編譯及鏈接,會生成一個exe可執行文件
  • -Wall  指定產生全部的警告信息 
  •  -O/-O2/-O3   數字越高,代表優化的更多,可以使生成的執行文件的提高執行效率
  • -c 編譯不鏈接,會生成一個*.obj文件,若后面加了-o,則表示指定輸出文件名稱
  • -static   靜態鏈接,生成的文件會非常大, 好處在於不需要動態鏈接庫,也可以運行
  • -S 只激活預處理和編譯,就是指把文件編譯成為匯編代碼

 

例如:
arm-linux-gcc -c -o  led.o led.c   :編譯不鏈接

arm-linux-gcc   -o  led  led.c       :編譯以及鏈接

arm-linux-ld    連接選項

  • -Ttext 0x00000000              指代碼段頭地址為0x00000000
  • -T鏈接腳本                          指使用鏈接腳本來進行更復雜的地址設置,包括了代碼段,數據段,bss段等
  • -o                                        后面指的將多個文件連接在一起,生成一個obj文件,上面的名稱是led_elf。
  •  -pie                    生成動態鏈接地址段,一般在新版uboot里會看到

arm-linux-objcopy   復制選項,支持格式轉換

  • -O binary     用來指定生成文件按照后面的格式來輸出,其中binary是指生成二進制(.bin)文件。     
  • -S                 不從源文件中復制重定位信息和符號信息到目標文件中去

arm-linux-objdump   反編譯選項 

  • -D                反編譯所有段
  • -b binary     指定反編譯目標文件格式
  • -m ram       指定反編譯目標文件所需的架構,這里是ram架構

 


免責聲明!

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



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