嵌入式开发的时候,我们的编译一个*.S文件,并最终生成bin文件,编译命令大致如下:

CC=arm-softfloat-linux-gnu-gcc

LD=arm-softfloat-linux-gnu-ld

OBJCOPY=arm-softfloat-linux-gnu-objcopy

$(CC) -g $(CFLAG) -c boot.S     #先将boot.S文件生成boot.o

$(LD) -g -Bstatic -T$(LDFILE) -Ttext 0x12345600 boot.o --start-group -Map boot.map -o boot.elf    #再将boot.o生成boot.elf, boot.elf通常就是可执行文件,类似于gcc -o test test.c 中的test文件,在Linux Shell下输入./test就可以执行。

$(OBJCOPY) -O binary boot.elf boot.bin    #接着将boot.elf->boot.bin,这样可以缩小代码尺寸。

运行arm-softfloat-linux-gnu-objdump -h boot.elf 可以查看该文件的信息,但是如果变成

arm-softfloat-linux-gnu-objdump -h boot.bin会提示错误,为了看boot.bin文件信息,输入:

arm-softfloat-linux-gnu-objdump -h -b binary -m arm boot.bin就可以了。哈哈我也是现学了一招,其中参数-h可以被替换成为-D, -S, -s等等,请用arm-softfloat-linux-gnu-objdump --help查看器中表示的意义。

说说ELF Bin 文件区别:

我们有了Linux OS,为了运行可执行文件,他们是遵循ELF格式的,通常gcc -o test test.c,生成的test文件就是ELF格式的,这样就可以运行了。

arm-softfloat-linux-gnu-objcopy命令将去掉ELF格式的东西,仅仅保留最纯的汇编(不知道如何解释),

在Embedded中,如果上电开始运行,没有OS系统,如果将ELF格式的文件烧写进去,包含一些ELF格式的东西,arm运行碰到这些指令,就会导致失败,如果用arm-softfloat-linux-gnu-objcopy生成纯粹的汇编,程序就可以一步一步运行。

linux中如何编译成bin文件,gcc 如何编译成bin文件相关推荐

  1. Linux中yum执行yum -y install gcc 报错 解决方案

    Linux中yum执行yum -y install gcc 报错 解决方案 本人实际遇到的问题,已亲测正式环境,为防止下次在遇到,在这里做个记录,遇到此问题的小伙伴可以参考此文章. 文章摘自其它网友博 ...

  2. linux中可以安装不同版本的gcc么,在linux下安装多个版本的GCC

    文章链接:http://blog.csdn.net/chid/article/details/6251781 很是有用,转载学习 1.查看当前linux版本 内核版本:cat /proc/versio ...

  3. linux中终止vasp命令,VASP 5.4.4 编译f90文件总是终止

    本人在学校的超算集群上编译的,每次make all都是在大概相似的位置终止的,不知道是什么原因.编译器用的是 intel composer_xe_2016.3.210.错误上传图片了,求高人指点. 编 ...

  4. Linux中如何优雅的批量合并、拆分、加密pdf文件

    痛点 在windows中合并个pdf还要让你冲会员,真的是狗.linux下有没有一款工具能完成对pdf的合并.切分的工具呢? 有: PDFtk 功能 * Merge PDF Documents or ...

  5. linux中改localhome名称,修改 /var/lib/locales/supported.d/local 文件(使用 locale -a 命令查看系統中所有已配置的 locale)...

    C 和 C++ 的標准庫分別有自己的 locale 操作方法,C 標准庫的 locale 設定函數是 setlocale(),而 C++ 標准庫有 locale 類和流對象的 imbue() 方法.這 ...

  6. linux中怎么运行chkdsk,是否有适用于Ubuntu的chkdsk等效文件?

    问题描述 当我询问this question关于从损坏的Linux分区中恢复数据时,人们建议从Windows安装盘引导并运行Chkdsk.好吧,我仍然没有Windows磁盘,但是我有Ubuntu 8. ...

  7. linux中python编译器的配置_PyCharm配置虚拟编译环境(windows/linux通用版)

    无论哪一个虚拟环境都需要依靠python官方的包(python2.×/python3.×),所以第一件事情就是要安装一个python包,主要途径如下:安装anaconda,目前最方便的python环境 ...

  8. Linux中gcc的编译、静态库和动态库的制作

    欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...

  9. linux gcc 静态编译,GCC 程序编译的静态链接和动态链接

    (给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...

  10. linux查看ld文件,Linux下库文件的设置 (/usr/bin/ld: cannot find -lxxx 的解决办法)

    /usr/bin/ld: cannot find -lhdf5 这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字. ...

最新文章

  1. Linux上PHP加入环境变量
  2. Android Studio 第一次配置及其使用
  3. pandas替换列值
  4. mysql在线复制_mysql的两种复制模式
  5. 越心虚越藏着掖着,越藏越掖越脱节
  6. linux raid auto 软raid parted,linux下的raid5配置方法.doc
  7. 算法训练 出现次数最多的整数
  8. 三篇论文之Google MapReduce中文版
  9. pythonturtle库使用心得_记录我的Python学习之旅(一)关于turtle库的基本用法
  10. 英文版Ubuntu 16.04系统如何解决gedit中文显示乱码的问题
  11. linux基础操作与实践,Linux操作系统基础与实践
  12. mysql oracle优缺点_oracle 的优缺点
  13. 运用CSS3制作3D盒子骰子
  14. 2013年7月3日星期三
  15. plsqldev 乱码
  16. EditPlus使用编辑Object C
  17. 前端工作七个月经验总结以及技术分享
  18. Unity 本地化比较实用的实现方案
  19. NitroSense无法打开(ACER)
  20. OpenCV+ip摄像头实现远程实时监控

热门文章

  1. bias tee电路设计-电容电感值
  2. grub4dos 加载 MEMTEST+86
  3. 【老生谈算法】matlab实现图像复原算法源码——图像复原
  4. 五笔字根表识别码图_识别码五笔字根表打印
  5. ESP8266的AT指令集
  6. YUV格式详解【全】
  7. 中国行政区域划分图 华北,东北,华东,中南,西南,西北
  8. 算法分析与设计 八大排序算法
  9. 超市管理系统的服务器,超市管理系统
  10. 我们一起来DIY一个电子秤吧