Linux环境基础开发工具使用

Linux编译器-gcc/g++的使用

首先先看一下自己的linux有没有安装gcc跟gcc,如果没有安装,执行以下命令

sudo yum install -y gcc-c++

命令:gcc -v、g++ -v,分别查看gcc跟g++的版本,gcc就是用来编译C程序的编译器,g++用来编译C++程序的编译器。

默认centos7.6或者8匹配的gcc版本是4.8,基本上完全够用

背景知识

GCC是一种开放源代码的编译器,全称为GNU Compiler Collection,它可以编译多种编程语言,包括C,C++,Objective-C,Fortran,Java等。它是GNU项目的重要组成部分,使用广泛,包含了许多编译器,如gcc,g++,gcj等。GCC的主要特点是:兼容多种操作系统和处理器架构,速度较快,生成的代码质量高,可以对代码进行优化等。

gcc使用

编译过程是将源代码转换为可执行代码的过程,它包括以下几个步骤:

  1. 预处理:对源代码进行一些文本替换和宏展开等操作,生成预处理后的代码。

  2. 编译:将预处理后的代码翻译成汇编语言。

  3. 汇编:将汇编语言翻译成机器语言指令。

  4. 链接:将编译后的目标文件和使用的库文件等链接成一个可执行文件。

具体的编译过程可以用以下命令进行操作:

  1. 预处理:使用gcc编译器的选项-E进行预处理,如:gcc -E main.c -o main.i;

  2. 编译:使用gcc编译器的选项-c进行编译,如:gcc -S main.i -o main.s;

  3. 汇编:使用GCC编译器的选项-S进行汇编,如:gcc -c main.s -o main.o;

  4. 链接:将编译后的目标文件和使用的库文件等链接成一个可执行文件,如:gcc main.o -o main。

这些步骤可以分别进行,也可以一次性完成,gcc编译器会根据需要自动完成每个步骤。

链接这里涉及到一个知识点- -库函数,我们在C程序中并没用定义printf函数,但是当我们引用了头文件,但注意,头文件也只有声明并没有printf函数的定义,那么这是在哪里实现的?

- -函数库

我们把这些函数都定义到函数库中,链接期间编译器会链接到这些函数库,有静态库有动态库,简单理解就是,静态库直接是把里面的代码拷贝到自己的程序中,所以所占空间往往比较大,动态库就是给了地址,当编译要用到的时候,根据地址去函数库找。

温馨提示:-o选项暂时可以理解为重新输出文件名

Linux调试器-gdb

GDB是一款功能强大的调试工具,可以用于C、C++、汇编等语言的调试。它可以帮助程序员定位代码中的错误和问题。

以下是GDB的一些常用命令:

  1. 启动程序: 用gdb命令启动程序,如:gdb ./a.out。

  2. 设置断点: 在调试代码的过程中,可以设置断点以停止程序的执行来检查代码,命令是break或者简写为b,如:b main或b 25。

  3. 查看断点: 可以使用info命令查看已设置的断点信息,如:info breakpoints。

  4. 执行代码: 使用run或者简写为r命令执行程序,如:r。

  5. 单步执行: 使用step或者简写为s命令单步执行程序,按需查看变量值,如:s。

  6. 跳过代码: 使用next或者简写为n命令跳过一行代码,不进入函数内部,如:n。

  7. 继续执行: 使用continue或者简写为c命令继续执行程序,如:c。

  8. 查看变量: 使用print或者简写为p命令查看变量的值,如:p x。

  9. 修改变量: 使用set命令修改变量的值,如:set x = 10。

  10. 查看栈帧: 使用bt命令查看当前的栈帧信息,如:bt。

以上是GDB的一些常用命令,GDB还有很多其他的命令和功能,可以根据需要进行查阅和使用。

make和makefile

  • 会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力
  • 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作
  • makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。
  • make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。
  • make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建

通常我们再写一个文件,会先把makefile写好

以下是makefile文件内容,我要输出file.c的内容
file:file.o
    gcc file.o -o file
file.o:file.s
    gcc -c file.s -o file.o
file.s:file.i
    gcc -S file.i -o file.s
file.i:file.c
    gcc -E file.c -o file.i

.PYHON   //修饰设置伪目标
clean:
    rm -f file.i file.s file.o file

这样只要运行make,就可以得到file.i file.o file.s file文件了。如果想要清除这些文件

make clean

一般来说,我们会用clean作为清除伪目标

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值