在linux中输入vi Makefile 来实现创建Makefile文件

  注意:命令行前必须加TAB键

  例如:将两个文件led.c和crt0.S汇编文件,制作一个Makefile文件

1 led.bin : crt0.S led.c2 arm-linux-gcc -c -o crt0.o crt0.c3 arm-linux-gcc -c -o led.o led.c4 arm-linux-ld -Ttext 0x00000000 -g crt0.o led.o -o led_elf5 arm-linux-objcopy -O binary -S led_elf led.bin6 arm-linux-objdump -D -m arm led_elf > led.dis7 clean:8 rm -f led_elf led.dis led.bin *.o

led.bin : crt0.S led.c 指的是依赖关系,led.bin是目标文件,:后面是依赖文件

1.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 :编译以及链接

2.arm-linux-ld 连接选项

-Ttext 0x00000000 指代码段头地址为0x00000000
-T链接脚本 指使用链接脚本来进行更复杂的地址设置,包括了代码段,数据段,bss段等
-o 后面指的将多个文件连接在一起,生成一个obj文件,上面的名称是led_elf。
-pie 生成动态链接地址段,一般在新版uboot里会看到

3.arm-linux-objcopy 复制选项,支持格式转换

-O binary 用来指定生成文件按照后面的格式来输出,其中binary是指生成二进制(.bin)文件。
-S 不从源文件中复制重定位信息和符号信息到目标文件中去

4.arm-linux-objdump 反编译选项

-D 反编译所有段
-b binary 指定反编译目标文件格式
-m ram 指定反编译目标文件所需的架构,这里是ram架构

©著作权归作者所有:来自51CTO博客作者LinuxDriverDev的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. 静态网站(博客)生成器Static Site Generators(SSGs)大集合
  2. 【DB笔试面试745】在Oracle中,RAC环境下的Redo文件可以放在节点本
  3. 【DB笔试面试759】在Oracle中,如果主库丢失归档文件,那么物理DG如
  4. 在Oracle中,如何定时删除归档日志文件?
  5. zabbix配置文件详解
  6. SVN服务的部署及使用
  7. 痞子衡嵌入式:PCM编码与Waveform音频文件(.wav)格式详解
  8. 痞子衡嵌入式:串口调试工具pzh-com诞生记(6)- 打包发布(PyInstaller
  9. 自定义性能调优文件:RHEL8学习系列2

随机推荐

  1. Android点滴积累(一)
  2. Android layout布局属性、标签属性总结大
  3. Android(安卓)修改SeekBar样式,打造理想进
  4. [摘]android 入门xml布局文件
  5. ok6410 android driver(11)
  6. Android API中文文档GridView
  7. NestedScrollingParent, NestedScrolling
  8. 〖Android〗存在多个Android设备时,使用Sh
  9. Android Selector和Shape
  10. 关于android SDK安装Failed to fetch URL