1. 以最基本的一个helloworld程序为例,代码如下(hello.c):
  2.  
  3. (其实下面这段代码没什么用处...)
  1. #include <stdio.h> 
  2.  
  3. void main() 
  4. int i = 0;
  5.     while(i < 10) 
  6.     { 
  7.         printf("hello world !!\n"); 
  8.  
  9. i++;
  10.     } 
  11.  
  12.     return ; 
  13.  
  14. 最基本的gcc编译方式为:
  15.  
  16. gcc -o test hello.c
  17.  
  18. - o 的意思是 指定编译生成的目标名称,那么上面编译的结果就是产生一个叫做hello的目标文件,
  19.  
  20. 可以通过./hello执行,执行结果是输出10条hello world。如果没有-o参数,默认生成的是 .a 类型的文件
  21.  
  22. - c 的作用是:只是编译而不做链接。生成的是.o类型的文件。在大型项目里面,写makefile的时候会经常用到
  23.  
  24. 这个选项,先把大量的源文件编译成.o类型的文件,在最后再链接到一起。- c 是无法指定生成的.o文件名称的。
  25.  
  26. - l 的作用是:包含指定的lib库文件。比如,在程序中用到了pthread,那么在编译的时候必须加上 -lpthread
  27.  
  28. 选项,比如上面的程序,gcc -o test -lpthread hello.c。当然,上面的程序没有用到pthread,但是依然是
  29.  
  30. 可以编译通过的。
  31.  
  32. 与- l 配套的是- L选项,-L选项是指定库文件的路径,如果是自己生成的lib文件,同时lib文件放在别的目录底下
  33.  
  34. 的话需要使用这个选项指定包含路径。
  35.  
  36. - Idir(需要跟单独的 -I 选项区分) 的作用是:添加一个include文件夹,编译时,会先去该文件夹查找需要的头
  37.  
  38. 文件,如果没有,才回去系统默认文件夹查找需要的头文件。
  39.  
  40. 如果要用到gdb调试器的话,那么有一个选项是必须的,那就是 - g,- g的意思是产生调试信息,当然-ggdb的话,
  41.  
  42. 可能会生成更多gdb可用的调试信息,但其实是-g的一个子参数,如果没有定义-g选项,那么是无法使用gdb进行调试
  43.  
  44. 的。
  45. 还有一个编译选项也是常用的,那就是 -w ,输出警告信息。gcc在编译时,有些情况下是不会打印警告信息的,如果想要
  46.  
  47. 看到警告信息,那么这个参数是必须的。比如gcc -o hello -w hello.c 。
  48.  
  49. 其他的参数,对我来说还不常用,等用到了再补充。

  50.