您的位置:首页 > 运维架构 > Linux

linux 环境下gcc参数详解

2012-11-08 13:45 330 查看
以最基本的一个helloworld程序为例,代码如下(hello.c):

(其实下面这段代码没什么用处...)
#include <stdio.h>

void main()
{
int i = 0;
while(i < 10)
{
printf("hello world !!\n");

i++;
}

return ;
}

最基本的gcc编译方式为:

gcc -o test hello.c

- o 的意思是 指定编译生成的目标名称,那么上面编译的结果就是产生一个叫做hello的目标文件,

可以通过./hello执行,执行结果是输出10条hello world。如果没有-o参数,默认生成的是 .a 类型的文件

- c 的作用是:只是编译而不做链接。生成的是.o类型的文件。在大型项目里面,写makefile的时候会经常用到

这个选项,先把大量的源文件编译成.o类型的文件,在最后再链接到一起。- c 是无法指定生成的.o文件名称的。

- l 的作用是:包含指定的lib库文件。比如,在程序中用到了pthread,那么在编译的时候必须加上 -lpthread

选项,比如上面的程序,gcc -o test -lpthread hello.c。当然,上面的程序没有用到pthread,但是依然是

可以编译通过的。

与- l 配套的是- L选项,-L选项是指定库文件的路径,如果是自己生成的lib文件,同时lib文件放在别的目录底下

的话需要使用这个选项指定包含路径。

- Idir(需要跟单独的 -I 选项区分) 的作用是:添加一个include文件夹,编译时,会先去该文件夹查找需要的头

文件,如果没有,才回去系统默认文件夹查找需要的头文件。

如果要用到gdb调试器的话,那么有一个选项是必须的,那就是 - g,- g的意思是产生调试信息,当然-ggdb的话,

可能会生成更多gdb可用的调试信息,但其实是-g的一个子参数,如果没有定义-g选项,那么是无法使用gdb进行调试

的。
还有一个编译选项也是常用的,那就是 -w ,输出警告信息。gcc在编译时,有些情况下是不会打印警告信息的,如果想要

看到警告信息,那么这个参数是必须的。比如gcc -o hello -w hello.c 。

其他的参数,对我来说还不常用,等用到了再补充。


本文出自 “雨辰” 博客,请务必保留此出处http://20yuchen.blog.51cto.com/5082744/1053859
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: