Linux工具

Linux 开发工具

  • gcc

    GCC 编译器是 Linux 下默认的 C/C++ 编译器,大部分 Linux 发行版中都是默认安装的。GCC 编译器通常以 Linux 命令的形式在终端(Shell)中使用

    • 查看是否安装gcc

在这里插入图片描述

  • 安装gcc

    yum install gcc // 换源速度更快
    
  • 编译

    将源文件编译成目标文件需要使用

    -c
    

    选项,例如:

    gcc -c main.c

    main.c会被编译为 main.o:

    GCC 编译器

    目标文件的后缀为

    .o
    

    一个源文件会生成一个目标文件,多个源文件会生成多个目标文件,源文件数目和目标文件数目是一样的。通常情况下,默认的目标文件名字和源文件名字是一样的。

    如果希望自定义目标文件的名字,那么可以使用

    -o
    

    选项,例如:

    gcc -c main.c -o a.o

    这样生成的目标文件的名字就是 a.o。

    • 链接
    gcc
    

    命令后面紧跟目标文件的名字,就可以将目标文件链接成为可执行文件,例如:

    gcc main.o

    就将 main.o 链接为 a.out。

    在gcc命令后面紧跟源文件名字或者目标文件名字都是可以的,gcc命令能够自动识别到底是源文件还是目标文件:如果是源文件,那么要经过编译和链接两个步骤才能生成可执行文件;如果是目标文件,只需要链接就可以了。使用-o

    选项仍然能够自定义可执行文件的名字,例如:

    gcc main.o -o main.out

    这样生成的可执行文件的名字就是 main.out。

  • 编译流程

    • 将C语言源程序预处理,生成.i文件。

    • 预处理后的.i文件编译成为汇编语言,生成.s文件。

    • 将汇编语言文件经过汇编,生成目标文件.o文件。

    • 将各个模块的.o文件链接起来生成一个可执行程序文件。

  • gcc常用选项

    -S

    将C语言源文件编译为汇编语言,但是并不汇编该程序。使用该选项,我们可以查看C语言代码对应的汇编代码。

    -E

    选项将C语言源文件进行预处理,但是并不编译该程序。对于一般的预处理问题,可以使用这个选项进行查看,例如,宏的展开问题、文件的包含问题等。

    -I

    由于指定包含的头文件的目录,这一点对于大型的代码组织来说是很有用的。

    -g

    选项可生成能被 gdb 调试器所使用的调试信息。只有使用了该选项后生成的可执行文件,才带有程序中引用的符号表。这时 gdb 调试程序才能对该可执行程序进行调试。

  • gdb

    gcc -g -c main.c
    gcc -o main main.o
    要想生成可以调试的可执行文件,需要在编译的时候加上-g选项,不用在链接的时候加。如果没有-g,你将看不见程序的函数名,变量名,所代替的全是运行的内存地址。
    开启
    gdb
    设置断点
    break
    运行程序
    run
    显示出与断点相邻的10行代码
    list
    单步调试(函数内或外)
    “next”严格保证控制点在当前范围,而“step”会跟随执行进入到函数内部。
    如果断点设置在调用函数的那一行,使用next控制点直接跳到下一行。如果使用step控制点会跳到函数内部的第一行。
    检查变量
    print
    修改变量
    set =
    设置监视点
    watch
    退出
    如果想要在你的程序暂停时退出程序,使用“kill”命令,如果想退出GDB,使用“quit”命令

    img

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值