知识屋:更实用的电脑技术知识网站
所在位置:首页 > 操作系统 > linux

Linux学习笔记五:gcc程序编译

发布时间:2014-09-05 15:58:10作者:知识屋


Linux学习笔记五:gcc程序编译
 
Linux下的gcc(GNU C Compiler)是由GNU推出的功能十分强大的平台编译器,它可在多种硬体平台上编译出可执行程序,对于gcc的学习与掌握非常必要,因为gcc将会伴随我们整个的linux学习及开发过程。gcc可以降c,c++及汇编程序编译链接成可执行的文件。需要注意的是在linux中可执行文件没有统一的后缀,系统是从文件的属性来区分的,这一点跟window下是大不一样的。
 
那么gcc的源文件是否可以不管文件的后缀呢?答案是否定的,gcc是要通过后缀来区别输入文件的类别的,如:.c, .a(由目标文件构成的库文件),.C, .cc , .cxx(是C++源代码文件),.h(头文件),.i(已经预处理过的C源代码文件), .ii(已预处理过的c++源代码文件),.o(编译后的目标文件),.s(汇编源代码文件),.S(经过预汇编的汇编源文件);
 
gcc的编译过程可以分为四个阶段,即:预处理,编译,汇编,链接。
  www.zhishiwu.com  
      下面看一个简单的例子:
 
  gcc常用编译选项: 
 
 1. -o(小o)    指定编译后的可执行文件名,默认为 XXX.out  
 
 2.  -c           只编译,不会进行连接的.o文件,不可执行
 
 3. -g         编译出可调试的程序,即如果我们需要对程序进行调试,则编译时必须带-g ,此时生成的文件将会大很多
 
 4. - O 及-O2   对编译链接过程进行优化
 
 5.-I(大i)    如-I/home/a  指定外加头文件目录   其实也可把自己做的头文件直接放在  /usr/include/下
  www.zhishiwu.com  
 6.-L        指定库所在路径,跟-I原理一样
 
 7. -static       静态链接    ,  即把库整合到程序中合成一个可执行文件 ,相比于动态库,则动态库只会在运行时动态地调用函数库。静态链接浪费空间,动态链接耗时。默认采用动态链接,但只要编译时加上-static选项就会进行静态链接。
 
 8. -Wall :   生成所有警告信息    而  -w 则不生成任何警告信息  
 9. -D   相当于#define    进行宏定义。  如 gcc -DYES  hello.c -o hello   这里定义了一个名为YES的宏
 
 
作者 stewen_001
(免责声明:文章内容如涉及作品内容、版权和其它问题,请及时与我们联系,我们将在第一时间删除内容,文章内容仅供参考)
收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜