linux下的代码是如何执行的 — — gcc

gcc工作的流程

第一步: 进行预处理

gcc -E hello.c

第二步: 生成汇编文件

gcc -S hello.i

第三步: 生成目标代码

gcc -c hello.s

注意:前三步-E、-S、-c未用-o指定生成得文件名时,会自动根据源文件名匹配

第四步: 生成可以执行文件

gcc hello.o -o hello

第五步: 执行

./hello

一步完成,直接将源文件生成一个可以执行文件,如果不指定输出文件名字, gcc编译器会生成一个默认的可以执行a.out

gcc -c hello.c -o hello

GG常用选项

选项作用
-E只进行预处理
-S(大写)只进行预处理和编译
-c(小写)只进行预处理、编译和汇编
gcc(不加选项,默认)进行预处理、编译、汇编、链接器,默认输出可执行文件a.out
-o file指定生成的输出文件名为file
-v / --version查看gcc版本号
-g生成可执行文件,进行了预处理、编译、汇编、链接器并包含调试信息
-On n=0~3编译优化,n越大优化得越多
-Wall提示更多警告信息
-D编译时定义宏

在gcc编译时,有警告信息,默认编译器可通过且不显示警告信息

编译时显示所有的警告信息

gcc -Wall test.c

编译时将警告信息当做错误处理,有警告信息编译不通过

gcc -Wall -Werror test.c

测试程序(-D选项):

#include <stdio.h>
int main(void){
#ifdef DEBUG//如果定义了宏DEBUG,就执行下面的代码,没定义就不执行
    printf("debug\n");
#endif
    printf("hello word!\n", );
	return 0;
}

(-D选项) 可用于调试,调试的时候就定义DEBUG,让调试信息输出,不调试时,不定义就不会输出

gcc test.c -DDebug

./a.out

debug

hello word!

g++与gcc用法相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值