linux中如何编译成bin文件,gcc 如何编译成bin文件
嵌入式开发的时候,我们的编译一个*.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文件相关推荐
- Linux中yum执行yum -y install gcc 报错 解决方案
Linux中yum执行yum -y install gcc 报错 解决方案 本人实际遇到的问题,已亲测正式环境,为防止下次在遇到,在这里做个记录,遇到此问题的小伙伴可以参考此文章. 文章摘自其它网友博 ...
- linux中可以安装不同版本的gcc么,在linux下安装多个版本的GCC
文章链接:http://blog.csdn.net/chid/article/details/6251781 很是有用,转载学习 1.查看当前linux版本 内核版本:cat /proc/versio ...
- linux中终止vasp命令,VASP 5.4.4 编译f90文件总是终止
本人在学校的超算集群上编译的,每次make all都是在大概相似的位置终止的,不知道是什么原因.编译器用的是 intel composer_xe_2016.3.210.错误上传图片了,求高人指点. 编 ...
- Linux中如何优雅的批量合并、拆分、加密pdf文件
痛点 在windows中合并个pdf还要让你冲会员,真的是狗.linux下有没有一款工具能完成对pdf的合并.切分的工具呢? 有: PDFtk 功能 * Merge PDF Documents or ...
- linux中改localhome名称,修改 /var/lib/locales/supported.d/local 文件(使用 locale -a 命令查看系統中所有已配置的 locale)...
C 和 C++ 的標准庫分別有自己的 locale 操作方法,C 標准庫的 locale 設定函數是 setlocale(),而 C++ 標准庫有 locale 類和流對象的 imbue() 方法.這 ...
- linux中怎么运行chkdsk,是否有适用于Ubuntu的chkdsk等效文件?
问题描述 当我询问this question关于从损坏的Linux分区中恢复数据时,人们建议从Windows安装盘引导并运行Chkdsk.好吧,我仍然没有Windows磁盘,但是我有Ubuntu 8. ...
- linux中python编译器的配置_PyCharm配置虚拟编译环境(windows/linux通用版)
无论哪一个虚拟环境都需要依靠python官方的包(python2.×/python3.×),所以第一件事情就是要安装一个python包,主要途径如下:安装anaconda,目前最方便的python环境 ...
- Linux中gcc的编译、静态库和动态库的制作
欢迎大家关注笔者,你的关注是我持续更博的最大动力 Linux中gcc的编译.静态库.动态库 文章目录: 1 gcc的编译过程 1.1 gcc的编译过程 1.2 gcc的常用参数 2 gcc 静态库的制 ...
- linux gcc 静态编译,GCC 程序编译的静态链接和动态链接
(给Linux爱好者加星标,提升Linux技能)转自:Mr_Bluyee 在链接阶段中,所有对应于源文件的 .o 文件.'-l' 选项指定的库文件.无法识别的文件名(包括指定的.o目标文件和.a库文件 ...
- linux查看ld文件,Linux下库文件的设置 (/usr/bin/ld: cannot find -lxxx 的解决办法)
/usr/bin/ld: cannot find -lhdf5 这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字. ...
最新文章
- Linux上PHP加入环境变量
- Android Studio 第一次配置及其使用
- pandas替换列值
- mysql在线复制_mysql的两种复制模式
- 越心虚越藏着掖着,越藏越掖越脱节
- linux raid auto 软raid parted,linux下的raid5配置方法.doc
- 算法训练 出现次数最多的整数
- 三篇论文之Google MapReduce中文版
- pythonturtle库使用心得_记录我的Python学习之旅(一)关于turtle库的基本用法
- 英文版Ubuntu 16.04系统如何解决gedit中文显示乱码的问题
- linux基础操作与实践,Linux操作系统基础与实践
- mysql oracle优缺点_oracle 的优缺点
- 运用CSS3制作3D盒子骰子
- 2013年7月3日星期三
- plsqldev 乱码
- EditPlus使用编辑Object C
- 前端工作七个月经验总结以及技术分享
- Unity 本地化比较实用的实现方案
- NitroSense无法打开(ACER)
- OpenCV+ip摄像头实现远程实时监控