Chinaunix首页 | 论坛 | 博客
  • 博客访问: 898772
  • 博文数量: 119
  • 博客积分: 2493
  • 博客等级: 大尉
  • 技术积分: 2363
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-03 14:00
文章分类

全部博文(119)

文章存档

2013年(19)

2012年(100)

分类: LINUX

2012-08-27 10:20:44

关于GCC的重要知识点。
1,GCC编译程序的四个阶段。
2,GCC常用的编译选项。
-----------------------------------------------------------------------
一,GCC编译的四个阶段。
      1,预处理。
      2,编译。
      3,汇编。
      4,链接。
-----------------------------------------------------------------------
二,GCC常用编译选项详解。(都来自于GCC使用手册)

由于GCC的编译选项很多,所以为了方便,将选项分类。

1,调试选项。
常用的调试选项就两个,一个 -g 另外一个就是 -gstabs
-g : 产生调试器GDB所需要的符号信息。
-gstabs:该调试选项多是用来调试汇编。比如说如果使用as编译ATT汇编,
               然后用gdb调试的话就可以在用as编译的时候加上-gstabs选项。

2,目录选项。
常用的目录选项也只有两个。
-Idir : 添加头文件搜索的目录列表。一般GCC搜索头文件的默认目录是/usr/
          include/如果在工程应用中程序员自己定义了一个头文件目录,就用
         可以使用-I将该目录追加上。

-Ldir:添加库文件搜索的目录列表。一般GCC搜索库文件的默认目录是/usr/
          lib。如果在工程项目中程序员自己生成了很多的库文件,就可以使用-L
          链接,将该库文件的搜索目录追加上。

3,链接选项。
-llibrary:连接名为 library 的库文件.
               库文件的真正名字是`liblibrary.a'

-static:静态编译。
     该选项是不使用动态库,将所有的链接库都整合到可执行文件中去。
     可以看出加该参数的编译方式的可执行文件的大小比没有加该参数
     的编译方式大很多。使用静态编译常用于反汇编一些可执行文件,
     这样把库中都做了些什么都可以看得到。

-shared:生成共享目标文件。
      该参数多在制作动态库的时候使用,用该参数生成的object可以
      是共享的。通过链接可以其他OBJ文件编译为可执行文件。

4,总体选项
-o file:

   指定输出文件为 file.该选项不在乎 GCC 产生什么输出,无论是可执
   行文件,目标文件,汇编文件还是 预处理后的 C 代码.
    
   如果没有使用`-o'选项,默认的输出结果是:可执行文件为`a.out', `source.
   suffix '的目标文件是`source.o',汇编文件是 `source.s',而预处理后的
   C 源代码送往标准输出.

-c :编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件.
       该参数在制作静态库的时候经常用。

-E:预处理后即停止,不进行编译.预处理后的代码送往标准输出.

-S:编译后即停止,不进行汇编.对于每个输入的非汇编语言文件,
      输出文件是汇编语言文件.

5,优化选项。
        待序...
-----------------------------------------------------------------------

阅读(4857) | 评论(0) | 转发(2) |
0

上一篇:自己动手制作软件包

下一篇:core dump

给主人留下些什么吧!~~