gcc使用

1、最简单例子C

$vi hello.c

#include<stdio.h>

int main(void)

{

printf ("Hello world, Linux programming!/n");

return 0;

}

# gcc hello.c -o hello

# ./hello

2最简单例子C++

#include <iostream>

using namespace std;

int main (void)

{

  cout << "Hello, world!" << endl;

}

则可以如下调用 g++ 命令编译、连接并生成可执行文件:

$ g++ ghello.cpp –o ghello

$ ./hello

1、  原理

首先,GCC需要调用预处理程序 cpp,由它负责展开在源文件中定义的宏,并向其中插入“#include”语句所包含的内容;接着,GCC会调用cclas将处理后的源代码编译成目标代码;最后,GCC会调用链接程序ld,把生成的目标代码链接成一个可执行程序。

为了更好地理解GCC的工作过程,可以把上述编译过程分成几个步骤单独进行,并观察每步的运行结果。第一步是进行预编译,使用-E参数可以让GCC在预处理结束后停止编译过程:

# gcc -E hello.c -o hello.i

此时若查看hello.i文件中的内容,会发现stdio.h的内容确实都插到文件里去了,而其它应当被预处理的宏定义也都做了相应的处理。下一步是将hello.i编译为目标代码,这可以通过使用-c参数来完成:

# gcc -c hello.i -o hello.o

GCC默认将.i文件看成是预处理后的C语言源代码,因此上述命令将自动跳过预处理步骤而开始执行编译过程,也可以使用-x参数让GCC从指定的步骤开始编译。最后一步是将生成的目标文件链接成可执行文件:

# gcc hello.o -o hello

在编译一个包含许多源文件的工程时,若只用一条GCC命令来完成编译是非常浪费时间的。尤其是当用户只是修改了其中某一个文件的时候,完全没有必要将每个文件都重新编译一遍。要解决这个问题,关键是要灵活运用GCC,同时还要借助像Make这样的工具。

3、多个程序文件的编译

设有一个由test1.c test2.c两个源文件组成的程序,为了对它们进行编译,并最终生成可执行程序test,可以使用下面这条命令:

# gcc test1.c test2.c -o test

上面这条命令大致相当于依次执行如下三条命令:

# gcc -c test1.c -o test1.o

# gcc -c test2.c -o test2.o

# gcc test1.o test2.o -o test

4、检错

gcc -pedantic illcode.c -o illcode

-pedantic选项能够帮助程序员发现一些不符合 ANSI/ISO C标准的代码,但不是全部,事实上只有ANSI/ISO C语言标准中要求进行编译器诊断的那些情况,才有可能被GCC发现并提出警告。

5、库文件连接

6、优化

-On来控制优化代码的生成,其中n是一个代表优化级别的整数。

7、程序性能分析 

GCC支持的其它调试选项还包括-p-pg,它们会将剖析(Profiling)信息加入到最终生成的二进制代码中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值