gcc学习笔记

来源:互联网 发布:斯皮尔伯格 人工智能 编辑:程序博客网 时间:2024/06/06 08:59

格式:   gcc [option]  [filename]

-c 只编译生成.o文件

-o output_filename

-O 优化程序

-O2 优化程度更深

-g 产生代码调试信息

-Wall  所有警告

-Werror  报error

-w 不产生任何警告

-v 输出gcc工作的详细过程


-DMACRO 相当于#define MACRO

-I  dirname    (大写的i)用" "的头文件若在当前目录没有,则到dirname中找

-L dirname  首先到dirname中寻找所需库文件(默认在预设路径找,如/usr/lib)

-lname        在连接时装载名字为"libname.a"的函数库

                   如:  -lm  表示连接系统的数学库libm.a,所有与浮点运算相关的都必须用数学库!

-static     库分动态和静态,动态通常以.so为后缀,静态通常以.a为后缀

               静态库: 把用到的函数放在程序里,

               动态库: 在程序内留下标记,当程序执行是先载入这个库

               linux下进行连接的缺省操作是首先连接动态库


分段编译:

程序编译的流程:

  1. 预处理:  展开宏,加入"#include "包含的内容,生成预编译文件 **.i
  2. 汇编:      生成汇编源文件 **.s
  3. 编译:     生成目标文件 **.o
  4. 链接:     将目标代码链接成可执行文件(放到和合适的地方)

相关选项:

-E  预编译,生成**.i

-S  汇编,   生成.s

-c   编译,   生成.o


原创粉丝点击