`
Goldice
  • 浏览: 104330 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

g++的使用

阅读更多

g++ 

 

一般分为这几步:

1. 预处理,生成.i文件

2. 编译,生成.s文件(汇编文件)

3. 汇编,将汇编文件转化成.o文件(目标文件)

4. 连接目标代码,生成可执行文件

 

-c  激活预处理,编译,汇编,最后生成obj文件

-S 激活预处理,编译,最后生成.s汇编文件

-E 激活预处理,不生成文件,需要定位到一个输出文件里

 

-o 为结果文件命名

 

-O0

-O1

-O2

-O4

编译器的四个优化级别,-O0为没有优化,-O1为默认值,-O3为优化最高级别。

对于valgrind来说,-O0是最喜欢的,只是速度较慢。-O1相对-O0来说错误信息可能不够完整,但一般来说表现良好。-O2就不推荐了。

 

-Wall 使g++能够产生尽可能过的警告消息

 

对于多个文件:

g++ foo1.cc foo2.cc -o foo

相当于:

g++ foo1.cc -o foo1.o

g++ foo2.cc -o foo2.o

g++ foo1.o foo2.o -o foo

 

 

调用函数库:函数库是一些头文件(.h文件)和库文件(.a和.so文件)的集合

-I 向g++头文件搜索路径中添加新的路径

-L 向g++库文件搜索路径中添加新的路径

-l 指示g++链接的函数库,库文件命名以lib开头,故这里可以省略lib

 

库文件分为:静态链接库(.a结尾),动态链接库(.so结尾)

g++优先使用动态链接库,在动态链接库不存在的情况下使用静态链接库

可以在编译时增加-static强制使用静态链接库

 

-Dmacro 相当于C语言中的#define macro

-Dmacro=defn 相当于C语言中的#define macro=defn

-Umacro 相当于C语言中的#undef macro

 

1
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics