在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架构

转载于:https://www.cnblogs.com/lifexy/p/7065175.html

makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解相关推荐

  1. makefile初步制作,arm-linux- (gcc/ld/objcopy/objdump)详解【转】

    转自:http://www.cnblogs.com/lifexy/p/7065175.html 在linux中输入vi Makefile 来实现创建Makefile文件 注意:命令行前必须加TAB键 ...

  2. arm-linux-gcc/ld/objcopy/objdump参数总结【转】

    arm-linux-gcc/ld/objcopy/objdump参数总结 转自:http://blog.csdn.net/muyuyuzhong/article/details/7755291 arm ...

  3. Ubuntu12.4 64位 安装 arm linux gcc 4.3.2

    一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...

  4. linux上安装Openssl步骤详解

    linux上安装Openssl步骤详解     1,查看原有系统是否已安装Openssl openssl version -a 系统已经安装了openssl,我们先安装新的版本,然后将环境配置成最新的 ...

  5. Linux驱动开发必看详解神秘内核(完全转载)

    Linux驱动开发必看详解神秘内核 完全转载-链接:http://blog.chinaunix.net/uid-21356596-id-1827434.html IT168 技术文档]在开始步入Lin ...

  6. Linux Jump Label/static-key机制详解

    Linux Jump Label/static-key机制详解 RToax 2021年3 关于Linux Jump Label(x86)已经进行过概述,下面就static-key进行详述. 内核中有很 ...

  7. Linux iftop 安装与参数详解 【转】

    文章来源:Linux iftop 安装与参数详解 文章参考:Linux流量监控工具 - iftop (最全面的iftop教程) 介绍 iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是 ...

  8. LINUX经常使用的命令详解

    LINUX经常使用的命令详解 源地址:http://blog.itpub.net/29065182/viewspace-1189162/ 1.man 对你熟悉或不熟悉的命令提供帮助解释  eg:man ...

  9. Ubuntu (Linux) 系统 find 命令详解

    Ubuntu (Linux) 系统 find 命令详解 在Ubuntu (Linux)系统的终端上,虽然没有像 windows 上那样简介易用的图形界面 搜索工具,但只要你使用足够熟练, 有一个强大命 ...

  10. 基于瑞芯微3399的嵌入式linux,瑞芯微x3399 linux QT平台WIFI移植详解

    原标题:瑞芯微x3399 linux QT平台WIFI移植详解 第1章 内核配置 硬件平台:x3399开发板或ibox3399卡片电脑 操作系统:linux4.4.5+ QT5.6 WIFI型号:AP ...

最新文章

  1. c语言中比较两个数组函数,输入两个数组,调用large函数比较,计数,输出统计结果...
  2. java jar 版本号_java – 获取JAR文件版本号
  3. python处理数据的优势-python处理excel的优势是什么
  4. java 程序片段_20个非常有用的Java程序片段
  5. Linux每次开机都要source /etc/profile的解决方法
  6. P4559 [JSOI2018]列队 主席树
  7. php中define的参数_php中define的用法有哪些
  8. Spring Boot工作笔记-RabbitMQ中Unsupported major.minor version 52.0问题
  9. 我从Python新手到大师的百天之路(内附学习资源)
  10. PHP 实现微信公众号网页授权登录
  11. 硬盘属于计算机的主存吗,.硬盘装在主机箱内,因此硬盘属于主存对吗
  12. python视频补帧_AI 复原 100 年前的京城老视频,靠这三个开源工具
  13. java hl7_HL7中文完整版及代码实例
  14. 麦乐积分:积分兑换系统对于积分运营的重要性
  15. 合成全身火焰燃烧人物海报图片的PS教程
  16. 《SQL 入门教程》示例数据库
  17. Switch新机发布引全球吐槽
  18. 漫漫大学江湖录 - 爱与恨唯与工作更交织
  19. python蜂鸣器天空之城频率_如何把两个程序合在一起实现(小车超声波避障+蜂鸣器音乐《天空之城》)...
  20. Java中的Thread类

热门文章

  1. 一次没想好,第二次就要想到做好
  2. Ubuntu10.0.4下CyanogenMod编译环境的搭建和可刷机文件的编译及打包
  3. 控制台或者dll中CreateWindow 出错
  4. Oracle内账号密码过期the password has expired
  5. Thinking in Java 12.8.2 在return中使用finally
  6. 19. 镜像二叉树(C++版本)
  7. linux 多线程超时中断,c#中的线程超时
  8. 关于maven下载依赖失败问题
  9. html attr src,jQuery中css()和attr()方法的区别
  10. 重置系统_WIN10系统如何创建密码重置盘