Red Hat6 GCC编译流程学习笔记

本文详细解析了GCC编译器的编译流程,包括预处理、编译、汇编和链接四个阶段,并介绍了如何使用GCC选项进行优化及生成特定文件。同时,深入探讨了交叉工具链的使用,如ARM-Linux-GCC、ARM-Linux-LD等,适用于嵌入式系统的开发。

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

一、流程:
hello.c 预处理 hello.i 编译 hello.s 汇编 hello.o 链接 hello
二、具体过程
1、完成预编译
gcc -E hello.c -o hello.i
生成hello.i文件
2、gcc -S hello.i -o hello.s
编译生成hello.s汇编文件
3、gcc -c hello.s -o hello.o
经汇编生成hello.o二进制文件
4、gcc hello.o -o hello
可执行应用程序hello
三、GCC编译选项
1、-o可改变可执行程序的名字
gcc app.c -o app:将app.c生成的a.out改成app,这样子便于区分
2、-o -O -O2优化程度递增,但是编译速度很变慢
四、交叉工具链
1、学习使用
arm-linux-gcc 交叉编译器
arm-linux-ld 交叉链接器
arm-linux-readelf查看
arm-linux-objdump反汇编器
arm-linux-objcopy

2、arm-linux-gcc -g -c led.S只编译不链接

3、arm-linux-ld -Tled.lds -o led.elf led.o main.o使用链接器脚本
将多个.o文件链接成一个led.elf文件

4、arm-linux-readelf -a led.elf
查看led.elf所有内容
检查能否运行
arm-linux-gcc hello.c -o hello
flie hello
检查运行环境
arm-linux-readelf -d hello查看hello使用的库
5、
arm-linux-objdump -D -S hello >dump反汇编输出到dump
6、arm-linux-objcopy -O binary led.elf eld.bin
转化成二进制文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值