您的位置:首页 > 其它

关于gcc、g++、gdb的一些知识

2017-04-13 21:33 246 查看
先提一句,我们在讲源文件编译生成为可执行文件时,过程应该是这样的:

预处理->编译->汇编->链接

gcc

选项:

-o:指定生成的输出文件

-E:仅执行编译预处理

-wall:显示警告信息

-S:将C代码转换为汇编代码

-c:仅执行编译操作,不进行链接操作

样例:

gcc project.c -o test.out

若多文件编译,则:

gcc project_one.c project_two.c -o test.out

当然,也可以分别进行编译操作,然后进行链接:

gcc project_one.c -c

gcc project_two.c -c

gcc project_one.o project_two.o -o test.out

g++

选项:

-o:指定生成的输出文件

-E:仅执行编译预处理

-S:将C代码转换为汇编代码

-c:仅执行编译操作,不进行链接操作

除此以外,g++还有一些关键参数:

-x “language” :指定其后输入文件的语言

e.g.
g++ -x c tmp.cpp


这里,我们就把tmp.cpp文件指定为c语言了,当然会不会出错,就的看tmp.cpp文件里的内容了。

GDB

基本操作:

在Terminal中输入gdb,即可进入gdb操作界面。

file “Filename”

加载被调试的可执行程序文件,若文件不在当前目录,则需要添加路径

r

运行被调试的程序,r:run

b <行号>

b <函数名称>

b *<函数名称>

b *<代码地址>

设置断点,断点编号从1开始递增,b:breakpoint

c

继续执行被调试程序,c:continue

d <编号>

删除指定编号断点,或删除所有断点,d: delete breakpoint

p <变量名称>

显示指定变量的值,p:print

q

退出gdb调试环境,q:quit

help<命令名称>

查询该命令的说明

PS:alias可以设置别名,比如:alias t=”gcc”,则 t p.c等价于gcc p.c

参考资料:

http://blog.csdn.net/liigo/article/details/582231/

http://man.linuxde.net/gcc
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: