Ubuntu底下的C编程 编译-汇编-连接

从C语言到最终可执行程序主要分两个阶段:
1 将各个C语言的源文件生成目标文件(*.o);
2 将各个目标文件进行连接生成可执行程序

动态连接方法
生成目标文件的第一步骤:
sudo gcc -pipe -g -Wall -I. -c -o getarg.o getarg.c
sudo gcc -pipe -g -Wall -I. -c -o writeinfo.o writeinfo.c
sudo gcc -pipe -g -Wall -I. -c -o main.o main.c

-g 表示包含调试信息
-Wall 表示输出所有的警告
-I. 表示包含当前目录为头文件搜索路径,这个选项用于增加搜索文件的路径
尤其在工程较大,文件分布在各个目录的情况下经常使用
-pipe 表示使用管道替换临时文件
-o 指定目标文件的名称

生成目标的第二个步骤:
连接三个目标,生成可执行程序
$gcc -Wall -g getarg.o writeinfo.o main.o -o test
test为输出文件的名称,由-c指定



静态链接方法
$gcc -Wall -g getarg.o writeinfo.o main.o -static -o test_static
静态连接生成时,将所需要的库函数都纳入文件之中哦姑娘,运行


实际上,编译过程分为3个阶段:预处理,编译,汇编
预处理(去注释,头文件展开,宏替换)
gcc -E main.c
将C语言编译为汇编语言
gcc -pipe -g -Wall -I. -S main.c -o main.s
汇编语言生成目标文件
gcc -pipe -g -Wall -I. -c main.s -o main.o
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值