gcc常用编译选项及相关知识

                                                       Linux   gcc编译常用编译命令

                                                                                  谢凡凡 2010-10-28  于西安高新区冉科公司

gcc命令格式:gcc [options][filename]

 

-x language        指定使用的语言(cc++或汇编)

-c                         只对文件进行编译和汇编,生成.o目标文件,但不进行链接操作

-S                        只对文件进行编译,但不汇编和链接,生成汇编文件.s

-E                         只对文件进行预处理,但不编译汇编和链接,

-o [file1] file2   将文件file2编译成可执行文件file1

-L library            指定所使用的库文件的路径

-I directory         include文件的路径

-w                        禁止警告信息

-pedantic            严格要求符合ansi标准

-Wall                   显示警告信息

-g                          插入调试信息,便于调试

-p                          产生prof所需的信息

-pg                        产生grpof所使用信息

-O(O1)                对编译出的代码进行优化

-O2                       -O高一级的优化

-O3                       产生更高级别的优化

-v                          显示gcc版本

-m***               根据不同的微处理器进行优化

 

gcc优化代码:-O1,-O2,-O3

优点:代码优化,程序运行更快

缺点:

  1. 优化级别越高,编译时间越长(提示:开发时不要优化,最终发行时,才进行优化)

  2. 优化级别越高,越消耗内存

  3. 使用优化选项,调试不方便

 

高级gcc选项:

   管理大型项目最好用make

  1. 指定查找路径

    Eg:包含zw.h,在路径/usr/include/zw

    gcc –Wall –I/usr/include/zw –o test test.c

     

    指定链接库,给出链接库的路径,并告诉链接库的名字:

    gcc –L/usr/x11/lib –Wall –o test test.c –lx11

  2. 链接库

    程序中链接库,使用-l选项,链接库可以是静态的,也可以是动态的。

    链接数学库

    gcc –o test test.c –lm

  3. 使用管道

    管道实现的是使管道前的输出成为管道后的输入(一个程序的输出作为另外一个程序的输入)

    gcc  -pipe –o testtest.c

     

gcc编译流程:

  1. C预处理器cpp

    C预处理器cpp用来完成宏的求值、条件编译以及其它在编译前完成的工作。可以完成:解释宏,处理包含文件,处理#if#ifdef等。通常gcc自动调用cpp,也可以通过gcc –E调用。

  2. gun连接器ld

    连接器将许多独立的模块组合成为一个可执行文件,gcc自动调用ld,也可以手动调用ld,更好控制连接过程。

  3. GUN汇编器as

    Gcc编译产生汇编代码,as处理汇编代码,得到目标文件二进制文件),最终生成可执行文件。通常情况下gcc调用。

        4、文件处理器ar

可以使用ar程序建立静态库,把几个小文件组合成一个大文件。建立静态库时,必须把多个.o文件组合成一个单独的.a文件。

        5、库显示ldd

查看一个可执行程序使用的共享库。

Eg:ldd ./test

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章