Linux中程序编译

这篇博客详细介绍了在ARM架构下如何使用arm-linux-gnueabihf-gcc进行编译,生成调试信息,以及使用arm-linux-gnueabihf-ld进行链接。接着,通过arm-linux-gnueabihf-objcopy将生成的elf文件转换为二进制,并用arm-linux-gnueabihf-objdump进行反汇编。整个过程涵盖了从源码到可执行二进制文件的转换步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

编译文件

arm-linux-gnueabihf-gcc
eg:arm-linux-gnueabihf-gcc -g -c led.s -o led.o
    //-g选项是产生调试信息,GDB调试能够利用这些信息进行调试
    //-c选项是编译源文件,但是不产生连接
    //-o是指定编译产生的文件名字,即指定编译后产生led.o文件

链接文件

arm-linux-gnueabihf-ld就是将众多的.o文件链接到一个指定的链接位置

arm-linux-guneabihf-ld -Ttext 0X87800000 led.o -o led.elf
//-Text就是指定链接位置
//-o选型指定链接生成的elf文件名,这里我们命名为led.elf

格式转换

arm-linux-guneabihf-objcopy -O binary -S -g led.elf led.bin
//-O指定以什么格式输出,即指定以二进制输出
//-S表示不要复制源文件中的重定位信息和符号信息
//-g表示不复制源文件中的调试信息

反汇编

arm-linux-guneabihf-objdump -D led.elf > led.dis
//-D表示反汇编所有的段,反汇编完成以后会出现led.dis文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值