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

    xiaoxiao2021-04-14  86

    先提一句,我们在讲源文件编译生成为可执行文件时,过程应该是这样的:

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

    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

    转载请注明原文地址: https://ju.6miu.com/read-670270.html

    最新回复(0)