历史上的今天
返回首页

历史上的今天

今天是:2025年02月18日(星期二)

正在发生

2020年02月18日 | ARM学习笔记10——GNU ARM命令行工具

2020-02-18 来源:eefocus

一、编译器arm-linux-gcc


  1、用arm-linux-gcc编译一个程序,一般它是要经过如下步骤的:


    1.1、预处理阶段


    编译器把上述代码中stdio.h编译进来,使用GCC的选项-E可以使GCC在预处理结束后停止编译过程,而不继续其他动作了。


    1.2、编译阶段  


    首先检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,arm-linux-gcc把代码翻译成汇编语言。用户可以使用-S选项来进行查看,该选项只编译而不进行汇编,生成汇编代码。


    1.3、汇编阶段  


    把编译阶段生成.s文件转成目标文件,使用者可使用选项-c就可产生.o文件了


    1.4、链接阶段  


    系统把printf等函数的实现都做到名为lib.so.6的库文件中去了(或者采用精通连接时有的.a文件中),在没有特别指定时,arm-linux-gcc会到系统默认的搜索路径下进行查找,也就是链接到lib.so.6库函数中去,这样就能实现函数printf了,而这也是链接的作用


  2、arm-linux-gcc 常用命令行选项


    2.1、-o      表示要求编译器产生所指定文件名的文件,因为默认的可执行文件名是a.out


    2.2、-L 指定链接时


    2.3、-I 指定头文件.h的搜索目录


    2.4、-l 正常链接只会用libc这个函数库,其他函数库需要用这个命令指定链接


    2.5、-S 只建立组合语文件


    2.6、-D 条件编译,搭配#ifdef #define用,如果有定义才编译


    2.7、-c 表示只要求编译器进行编译,而不要进行链接,产生以原始文件的文件命名但把其后缀名由.c变成.o的目标文件


    2.8、-g 要求编译器在编译的时候提供以后对程序进行调试的信息


    2.9、-E 表示编译器只进行编译,而不做汇编和链接


    2.10、-O1/O2/O3 比编译器对程序提供的最优化选项,在编译的时候使用该选项,可以使产生的可执行文件的执行效率提高,编译器会根据CPU的架构编出优化的程序代码,需要多花一点编译时间。-O2比较常用


    2.11、-Wall 指定产出全部的警告信号


二、汇编器arm-linux-as


  汇编器用于将汇编源文件汇编成目标文件,示例用法如下: $arm-linux-as hello.s -o hello.o


三、连接器arm-linux-ld


  连接器用于连接目标文件和系统库中的函数代码(目标代码),示例用法如下:


  $arm-linux-ld test1.o test2.o -lc -o hello.elf hello.o


  将test1.o、test2.o和hello.o一起连接生成可执行文件hello.elf文件


四、文件格式转换arm-linux-objcopy  


  用于文件格式转换,将生成的hello.elf文件转换成二进制文件,示例用法如下: $arm-linux-objcopy -O binary hello.elf hello.bin


五、反汇编arm-linux-objdump  


  用于将目标文件或elf格式可执行文件反汇编成汇编代码文件,示例用法如下: $arm-linux-objdump -S hello.o >hello.asm


六、elf格式文件查看:arm-linux-readelf  


  用来查看elf格式的文件的信息,可以输出elf文件额文件头信息,以及段信息,示例用法如下: $arm-linux-readelf -a hello.elf


七、静态库管理 arm-linux-ar  


  静态库管理软件,可以将产生的目标文件“.O”文件生成或添加到库中,也可以查看库中有的目标文件,示例代码如下: $arm-linux-ar rc hello.a hello.o


八、符号表生成指令 arm-linux-nm  


  生成elf文件中的符号,使用示例如下: $arm-linux-nm hello.elf >sym


九、去掉elf文件中不需要的信息和代码 arm-linux-strip  


  用于去掉文件中不使用的一些信息,如调试信息等,以减小目标文件的体积。从而节省存储空间或提高加载、执行效率,使用示例如下: $arm-linux-strip hello.elf

推荐阅读

史海拾趣

High Voltage Semiconductor Inc公司的发展小趣事

面对日益激烈的市场竞争和不断变化的市场需求,美高测始终保持着对技术创新的执着追求。公司不断投入研发资源,探索新的测试技术和应用场景,如微电网、新能源汽车等领域的高压半导体测试。同时,美高测还积极构建开放式的创新生态体系,与众多合作伙伴共同推动行业的进步和发展。通过这些努力,美高测在高压半导体测试领域持续保持着领先地位,为电子行业的未来发展贡献着重要力量。

C-MEDIA公司的发展小趣事

在2000年代初,C-MEDIA以其在音频处理领域的专业技术而知名。然而,随着市场竞争的加剧和技术的快速发展,公司意识到需要调整战略以适应市场变化。于是,C-MEDIA在与瑞昱(Realtek)达成收购协议后,决定将AC97、HD Audio板载音频芯片技术转让给Realtek,并退出板载声卡领域。这一决策使得C-MEDIA能够专注于中高端音频处理芯片的研发,进一步巩固了其在独立声卡市场的地位。

High Tech Chips Inc公司的发展小趣事

近年来,网络游戏市场呈现出蓬勃发展的态势,C-MEDIA公司也看到了其中的商机。于是,公司通过收购C&C Media,进一步深入日本网络游戏市场。这次收购不仅帮助C-MEDIA公司把握了该市场的成长机遇,也有效地拓展了其海外运营实力。C&C Media旗下的网络游戏门户网站“MK-STYLE”为个人用户提供了丰富的网络游戏服务,进一步巩固了C-MEDIA在网络游戏领域的市场地位。

Electronic-Bauteile Goerlitz GmbH公司的发展小趣事

随着公司规模的扩大,Electronic-Bauteile Goerlitz GmbH公司意识到供应链管理的重要性。公司通过优化供应链管理,实现了原材料采购、生产、物流等各个环节的协同作业。这不仅提高了生产效率,降低了成本,还确保了产品质量的稳定性和交货期的准确性。这些努力使得公司在竞争激烈的市场中保持了良好的竞争力。

Gamewell-FCI ( Honeywell )公司的发展小趣事

为了进一步提升公司的竞争力,Electronic-Bauteile Goerlitz GmbH公司积极实施国际化战略。公司通过与国外知名企业的合作,引进先进的技术和管理经验;同时,公司还在海外设立了研发中心和生产基地,以便更好地满足当地市场的需求。这些举措使得公司的业务范围不断扩展,国际影响力不断增强。

HEIMANN公司的发展小趣事

在技术创新的基础上,Electronic-Bauteile Goerlitz GmbH公司积极拓展市场。公司通过分析市场需求,调整产品策略,不断推出符合市场需求的新产品。同时,公司加强了品牌建设,通过参加国际展会、举办技术研讨会等活动,提高了品牌知名度和影响力。这些努力使得公司的产品在国内外市场上都取得了良好的销售业绩。

问答坊 | AI 解惑

电子元器件:第一块DSP板设计中的点滴

从2006.8.1开始正式接触DSP到现在也已经一个多月了,从开始的在自己的开发板上调试熟悉DSP到现在要自己设计DSP,真的是很不容易.我想把在设计中遇到的问题和常用的电路芯片选择归纳如下:     1.电源部分使用了AC-DC5V的变压器,在引入板子 ...…

查看全部问答>

LM3S移植ucos

不知道大家用LM3S系列的多不,目前有不没有移植ucos的吗?不过在移植 时可以参考sTM32的移植例子! 我发个文档供大家参考: 1:文档 2:iAR工程: 以上内容仅供参考! 建议大家自己移植!…

查看全部问答>

电感,变压器

请问下滤波电感变压器的原理和作用?,最好能发个图看看,长什么样?谢谢!…

查看全部问答>

信号链基础--运放

信号链基础--运放…

查看全部问答>

寻找RFID及嵌入式开发合作伙伴

本公司寻找有创业激情和梦想的志同道合者,发展方向是RFID及嵌入式开发…

查看全部问答>

怎样使用PB5.0的断点功能

如题,没怎么用过,这次我用的是X86的平台模拟器,在这个基础上想使用断点来跟踪程序请教高手怎么使用这个功能?…

查看全部问答>

请问一个c8051f单片机时钟使用的问题

现在用c8051f020的片子,使用的是外部振荡器产生时钟。可是我看datasheet上说串口使用系统时钟,是串口必须使用片内的时钟产生所需的波特率吗?同一个片子能既使用外部时钟有使用片内的时钟吗,谢谢!…

查看全部问答>

串口通信问题求解

小弟大1受一研究生朋友影响开始学习单片机并对此方面有很大的兴趣,在院实验室找了一个师兄弄了块板子做做东西,有很多地方弄不懂还望各位大虾指点一二(已经学完C语言但是还没看过C51) 感激万分!!! 利用单片机串行口,实现和PC之间的串行通 ...…

查看全部问答>

请问做一个USB管理软件的流程?

请问做一个USB管理软件的流程?…

查看全部问答>