嵌入式Linux ————关于GCC

2019-07-12 19:55发布

一.使用GCC编译程序时,编译过程可以细分为四个阶段:
  1. 预处理(Pre-Processing)
  2. 编译(Compiling)
  3. 汇编(Assembling)
  4. 链接(Linking)
二.Gcc通过后缀来区别输入文件的类别:
  1.    .c后缀文件 : C语言源代码文件
  2.    .h后缀文件 : 头文件
  3.    .a后缀文件 :有目标文件构成的库文件
  4.    .C  .cc  .cxx 后缀文件 : c++源码文件
  5.    .i 后缀文件 : 预处理过的C源代码文件
  6.    .ii 后缀文件 : 预处理过的c++源代码文件
  7.    .o 后缀文件 : 编译后的目标文件
  8.    .s 后缀文件 : 汇编语言源代码文件
  9.    .S 后缀文件 : 经过预编译的汇编语言源代码文件
三.使用vi 新建hello.c文件 编写程序后退出 gcc  hello.c  -o  hello    将hello.c 文件进行编译 ll           查看文件属性 ./hello      将hello可执行文件执行
  • Gcc 的基本使用方法: gcc [options][filenames]
  options: 编译器所需要的编译选项   filename:需要编译的文件名 常用编译选项: 1.-o + outfilename: 确定执行文件的名称为outfilename  如果不指定outfilename  gcc 默认输出可执行文件a.out  2.-c 只编译,不连接成功为可执行文件,编译器只输出源代码生成的.o为后缀的文件 3.-g 产生调试工具所必须的符号信息,要想对编译出的程序进行调试,就必须加入这个选项,加-g后输出程序变大。 未加入-g时,hello可执行文件的大小: 加入-g时的hello可执行文件的大小: 4.-O (大写) 对整个程序进行优化编译,链接使可执行的文件执行效率得到提高。 5.-O2  比-O更好的优化编译,过程不会比较慢。 6.-I +filepath :将filepath所指出的目录加到程序头文件目录列表中。   例: gcc  -I/home/lm/inc hello.c -o hello  (在/home/lm 目录下新建inc目录) 7.-L libpath: 将libpath所指出的目录加入到库文件的目录列表中。 8.-static : 静态链接库文件  库有静态与动态两种,动态通常用.so为后缀,静态用.a为后缀。动态链接要比静态链接节约内存空间。   例: gcc -static hello.c -o hello 9.-Wall 生成所有警告信息,-w 不生成警告信息 10.-D 相当于#define   例 gcc  -DYES  hello.c -o hello