先提一句,我们在讲源文件编译生成为可执行文件时,过程应该是这样的:
预处理->编译->汇编->链接
选项:
-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
选项:
-o:指定生成的输出文件 -E:仅执行编译预处理 -S:将C代码转换为汇编代码 -c:仅执行编译操作,不进行链接操作
除此以外,g++还有一些关键参数:
-x “language” :指定其后输入文件的语言
e.g. g++ -x c tmp.cpp这里,我们就把tmp.cpp文件指定为c语言了,当然会不会出错,就的看tmp.cpp文件里的内容了。
基本操作: 在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