g++编译总结

g++编译总结

一、编译注意细节

1.使用g++编译CPP文件如果用gcc编译C++源文件时,加以下选项:-lstdc++,否则使用了C++操作的文件编译会出错。

2.gcc/g++ 在执行编译时,需要4步

①   预处理,生成.i的文件[使用-E参数]

②   将预处理后的文件不转换成汇编语言,生成文件.s[使用-S参数]

③   有汇编变为目标代码(机器代码)生成.o的文件[使用-c参数]

④   连接目标代码,生成可执行程序[使用-o参数]

二、gdb调试

1.gdb的调试命令列表.

命令

解释

简写

file

装入想要调试的可执行文件

list

列出产生执行文件源代码的一部分

l

next

执行一行源代码但不进入函数内部

n

step

执行一行源代码而且进入函数内部

s

run

执行当前被调试的程序

r

continue

继续执行程序

c

quit

终止GDB

q

print

输出当前制定变量的值

p

break

在代码里设置断点

b

info break

查看设置断点的信息

ib

delete

删除设置的断点

d

watch

监视一个变量的值,一旦值有变化,程序停住。

wa

help

GDB的帮助命令

h

使用方法:

在编译程序的时候添加 –g参数,比如:

g++ -g -o hello hello.cpp

在gdb进行调试的使用再输入命令gdb+可执行文件名,比如:

gdb  hello

查看源文件 list 1,回车重复上一次指令

之后就是根据参数列表,按照自己的需求输入自己的命令。

参考网址:

http://blog.csdn.net/wfdtxz/article/details/7368357

另外,如果用makefile进行编译的话,要特别注意使用正则表达式,否则编译出的文件将不能用于调试。

比如makefile1:(运行正常)

而makefile2:

会提示出如下的错误:

三、g++编译选项详解:

g++编译选项对应表:

gcc/g++

命令的常用选项格式(选项  解释)

-o FILE

指定输出文件名,在编译为目标代码时,这一选项不是必须的。如果FILE没有指定,缺省文件名是a.out.

-c

只编译生成目标文件,不链接

-m486

针对 486 进行代码优化。

-O0

不进行优化处理。

-O 或 -O1

优化生成代码。

-O2

进一步优化。

-O3

比 -O2 更进一步优化,包括 inline 函数。

-w

关闭所有警告,建议不要使用此项

-Wall

允许发出gcc能提供的所有有用的警告,也可以用-W(warning)来标记指定的警告

-werror

把所有警告转换为错误,以在警告发生时中止编译过程

-MM

输出一个make兼容的相关列表

-v

显示在编译过程的每一步中用到的命令

-E

只运行 C 预编译器。

-shared

生成共享目标文件。通常用在建立共享库时。

-static

链接静态库,即执行静态链接

-lFOO

链接名为libFOO的函数库

-g

在可执行程序中包含标准调试信息

-ggdb

在可执行程序中包含只有GNU debugger才能使别的达两条是信息

-O

优化编译过的代码

-ON

指定代码优化的级别为N,o<=N<=3

-ansi

支持ANSI/ISO C的标准语法,取消GNU的语法扩展中与该标准有冲突的部分(但这一选项并不能保证生成ANSI兼容的代码) 这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。

-pedantic

允许发出ANSI/ISO C标准所列出的所有警告

-errors

允许发出ANSI/ISO C标准所列出的所有错误

-traditional

支持Kernighan & Ritchie C语法(如用旧式语法定义函数);如果不知道这个选项的含义,也没有关系

-IDIRECTORY

指定额外的头文件搜索路径DIRECTORY。

-LDIRECTORY

指定额外的函数库搜索路径DIRECTORY。

-DFOO=BAR

在命令行定义预处理宏FOO,其值为BAR

-IDIRNAME

将DIRNAME加入到头文件的搜索目录列表中

-LDIRNAME

将DIRNAME加入到库文件的搜索目录列表中,缺省情况下gcc 只链接共享库

-DMACRO

以字符串“1”定义 MACRO 宏。

-DMACRO=DEFN

以字符串“DEFN”定义 MACRO 宏。

-UMACRO

取消对 MACRO 宏的定义。

原文地址:https://www.cnblogs.com/bugutian/p/4490902.html