嵌入式Linux ————关于GCC

一.使用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文件 编写程序后退出

嵌入式Linux ————关于GCC_第1张图片

gcc  hello.c  -o  hello    将hello.c 文件进行编译

ll           查看文件属性

嵌入式Linux ————关于GCC_第2张图片

./hello      将hello可执行文件执行

嵌入式Linux ————关于GCC_第3张图片

  • Gcc 的基本使用方法: gcc [options][filenames]

  options: 编译器所需要的编译选项

  filename:需要编译的文件名

常用编译选项:

1.-o + outfilename: 确定执行文件的名称为outfilename  如果不指定outfilename  gcc 默认输出可执行文件a.out

嵌入式Linux ————关于GCC_第4张图片

 2.-c 只编译,不连接成功为可执行文件,编译器只输出源代码生成的.o为后缀的文件

3.-g 产生调试工具所必须的符号信息,要想对编译出的程序进行调试,就必须加入这个选项,加-g后输出程序变大。

未加入-g时,hello可执行文件的大小:

嵌入式Linux ————关于GCC_第5张图片

加入-g时的hello可执行文件的大小:

嵌入式Linux ————关于GCC_第6张图片

4.-O (大写) 对整个程序进行优化编译,链接使可执行的文件执行效率得到提高。

5.-O2  比-O更好的优化编译,过程不会比较慢。

嵌入式Linux ————关于GCC_第7张图片

6.-I +filepath :将filepath所指出的目录加到程序头文件目录列表中。

  例: gcc  -I/home/lm/inc hello.c -o hello  (在/home/lm 目录下新建inc目录)

嵌入式Linux ————关于GCC_第8张图片

7.-L libpath: 将libpath所指出的目录加入到库文件的目录列表中。

8.-static : 静态链接库文件

 库有静态与动态两种,动态通常用.so为后缀,静态用.a为后缀。动态链接要比静态链接节约内存空间。

  例: gcc -static hello.c -o hello

嵌入式Linux ————关于GCC_第9张图片

9.-Wall 生成所有警告信息,-w 不生成警告信息

10.-D 相当于#define   例 gcc  -DYES  hello.c -o hello  

 

 

你可能感兴趣的:(嵌入式linux)