在Linux中使用gcc/g++编译代码

1.方法速记

直接编译语法:将text.c文件或者text.cpp文件直接编译成text文件。

  • gcc text.c -o text // gcc-o text.c text
  • g++ text.cpp -o text // g++ text.cpp -o text
  • 注意:-o后面一定对应着目标文件(可执行文件)就好啦。

2.具体过程

2.1 预处理阶段

预处理的过程就是头文件包含,去注释,宏替换的过程。
预处理指令是以#开头的代码行。

将text.c文件预处理后变成text.i文件

  • gcc -E text.c -o text.i
    -E的选项是让gcc在预处理结束后就停止编译。

在这里插入图片描述
观察可以看到,预处理过后的文件800多行,头文件被包含在里面,并且观察main里面,具体的注释已经被去掉。

2.2 编译阶段

编译阶段是指将预处理后的代码变成汇编语言。

将text.c变成text.s或者将text.i变成text.s:

  • gcc -S text.i -o text.s
    -S:从现在开始进行编译,如果编译成功就停止下来。

在这里插入图片描述

2.3 汇编阶段

将汇编语言变成二进制代码。

将text.c/text.s文件变成text.o文件:

  • gcc -c text.s -o text.o
  • .o文件又叫可重定位目标文件。
    -c:从现在开始进行程序的翻译,如果汇编完成,就停下来。

使用od -x 文件命令,查看机器代码:
在这里插入图片描述

2.4链接阶段

将汇编阶段生成的.s文件转成目标文件(可执行文件)。

将text.o文件链接成可执行文件text:

  • gcc text.o -o -text

在这里插入图片描述

2.4.1 链接的细节

链接:动态链接和静态链接。
动态链接是将库(动态库.so)中我要的方法地址,填入我的可执行程序中,建立关联。(节省资源)
静态链接是直接将库(静态库.a)中的方法真的拷贝到我们的可执行程序中。(占用资源)


gcc或者g++默认使用动态链接编译过程。

  • 查看文件链接属性
  • file 文件名

在这里插入图片描述


  • 将源程序采用静态链接的策略
  • gcc text.c -o text-s -static
    -static:生成的目标文件采用静态链接
    在这里插入图片描述
    观察到文件大小差异很大。

在C程序中,并没有定义"printf"函数的实现,并且在预编译中的“stdio.h”头文件中只有该函数的声明,并没有该函数的实现,那么程序是如何运行"printf"的呢?
事实上,gcc默认是动态链接,预处理把printf函数的声明放到.i文件后,链接阶段可以根据该函数的声明(该函数定义的地址)找到函数的实现,从而实现连接过程。
可以使用ldd指令查看程序链接动态库的情况:

在这里插入图片描述

gcc和g++的操作一样,g++的方法就仅需把gcc换成g++即可。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux离线安装GCC和G++的步骤如下: 1. 下载GCC和G++的源代码包,可以从官方网站或镜像站点下载。 2. 解压源代码包,进入解压后的目录。 3. 执行configure命令,生成Makefile文件。命令格式为:./configure --prefix=/usr/local/gcc --disable-multilib。 4. 执行make命令,编译代码。命令格式为:make -j4。 5. 执行make install命令,安装GCC和G++。命令格式为:make install。 6. 配置环境变量,将GCC和G++的路径添加到PATH环境变量。可以在/etc/profile文件添加以下内容: export PATH=/usr/local/gcc/bin:$PATH 7. 验证安装是否成功,执行gcc -v和g++ -v命令,查看版本信息。 以上就是Linux离线安装GCC和G++的步骤。 ### 回答2: Linux是一款开源的操作系统,因为其完备的开发工具和庞大的用户群体,它成为了众多开发者的首选。在Linux系统gcc和g这两个工具的安装是非常重要的,因为它们是编译和连接程序所必须的。如果你的系统没有连接到互联网,那么你需要进行离线安装。下面是一些步骤,帮助你离线安装gcc和g。 1. 获取安装包 首先需要获取gcc和g的安装包。通常,这些安装包可以从你的Linux发行版的仓库获得。如果你无法通过互联网获取,你就需要从其他的渠道获取,例如从朋友的电脑或通过移动设备。安装包需要下载并存储在本地。 2. 安装前依赖 在Linux,一些软件包的安装需要先安装其他的软件包或库,这些依赖的软件包需要在安装前安装。你需要检查你的Linux发行版提供了哪些依赖的软件包,然后将它们逐一地安装。 3. 安装gcc和g 下载好所有的依赖包之后,接下来就需要安装gcc和g了。在终端,输入以下命令来安装gcc和g: ``` tar -xf gcc_版本号.tar.gz cd gcc_版本号 ./configure --prefix=/usr/local/gcc make make install ``` 以上命令解释: - tar命令解压缩安装包 - cd命令 进入gcc的目录下 - ./configure是运行configure脚本,用于检测系统环境。--prefix选项指定了安装的目录,在这里是/usr/local/gcc。 - make命令用于编译 - make install 用于安装 4. 配置环境变量 在安装完成后,需要设置环境变量,以便系统任何地方都可以使用gcc和g。在终端输入以下命令行: ``` echo "export PATH=/usr/local/gcc/bin:$PATH" >> ~/.bashrc source ~/.bashrc ``` 以上命令解释: - echo "export PATH=/usr/local/gcc/bin:$PATH" >> ~/.bashrc,该命令用来将路径/usr/local/gcc/bin加入环境变量 - source ~/.bashrc 是用于读取.bashrc文件的变动,如果不这样做,改变环境变量是不起作用的。 这些步骤完成后,你的系统就已经成功安装了gcc和g,你可以在终端输入gcc或g的命令来验证安装是否成功了。如果你的系统不能连接到互联网,现在已经可以使用gcc和g来编译程序了。 ### 回答3: Linux是一种常用的操作系统,在开发过程,经常需要使用gcc编译器和g++编译器来进行代码编译和构建。但是在某些情况下,我们可能需要在没有网络连接的情况下安装这些工具。下面介绍一下在Linux系统离线安装gcc和g++编译器的方法。 首先,我们需要准备好gcc和g++编译器版本的安装文件,可以从官方网站或者镜像网站下载对应版本的安装文件。下载完成后,将安装文件传输到Linux系统,放在一个目录下,例如/opt/gcc。 接下来,我们需要安装依赖库和工具包。在Linux系统gcc和g++编译器需要依赖一些库和工具包,比如binutils、libmpc、libmpfr、libgmp、mpc-devel、mpfr-devel和gmp-devel等。在没有网络连接的情况下,我们需要手动安装这些依赖库和工具包。 通过以下命令安装依赖库和工具包: yum install -y gcc gcc-c++ binutils libmpc libmpfr libgmp mpc-devel mpfr-devel gmp-devel 安装完成后,我们可以开始离线安装gcc和g++编译器。 通过以下命令进入/opt/gcc目录: cd /opt/gcc 解压安装文件: tar -zxvf gcc-XX.X.tar.gz 进入解压后的目录: cd gcc-XX.X 创建一个目录,用于编译安装: mkdir build 进入build目录: cd build 通过以下命令配置并编译: ../configure --prefix=/opt/gcc --disable-multilib --enable-languages=c,c++ make make install 这个过程可能需要花费比较长的时间,具体时间取决于系统硬件配置和编译器版本。安装完成后,我们可以通过以下命令查看gcc和g++编译器版本: /opt/gcc/bin/gcc -v /opt/gcc/bin/g++ -v 至此,我们已经完成了Linux系统离线安装gcc和g++编译器的过程。在没有网络连接的情况下,我们可以通过手动安装依赖库和工具包,并下载安装文件进行安装,来使用这些工具进行代码编译和构建。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值