Linux C++编程 ---- GCC的安装与使用

准备开始Linux平台的C++编程学习了,记录一下Linux平台编译器GCC的安装和基本使用。
我的机器是Ubuntu20.4

GCC的安装

命令安装(新手推荐)

sudo apt install gcc g++

源码编译安装

关于GCC源码编译的安装,英语水平不错的可以参考官方的教程,比我讲的更加详细,因为我也只是搬运了官方教程,可以看这里:GCC官方安装说明
参考官方教程,大致可以分为以下几个步骤

安装依赖

根据官方说明,编译GCC的前提条件需要有以下软件包支持(仅供参考)

软件包版本要求是否必须
支持C++11的编译器
C标准库与头文件(GCC4.7或更高)
GNU awk>=3.1.5
GNU Binutils
gzip>=1.2.4
bzip>=1.0.2
GNU make>=3.8.0
GNU tar>=1.1.4
Perl>=5.6.1
gmp>=4.3.2
mpfr>=3.1.0
mpc>=1.0.1
isl>=0.15
autoconfig>=2.69
m4>=1.4.6
automake>=1.15.1
gettext>=1.14.5
gperf>=2.7.2
autogen>=5.5.4
textinfo>=4.7
git无要求
ssh无要求
diffutils>=2.7

主要的依赖包就是上面表中的这些(突出颜色的都很重要),由于不同Linux发行版安装依赖包方法不同,我就不具体介绍了,可以参考其他博主的方法安装这些依赖,确保后面构建与编译不会报错

下载最新源代码

源码下载主要有两个途径,一个是通过GCC官方镜像站或国内其他镜像站下载
GCC官方镜像下载地址
另一个便是通过Git克隆官方仓库
没有安装Git请安装git

sudo apt install git
git clone git://gcc.gnu.org/git/gcc.git 
// 或者 git clone https://gcc.gnu.org/git/gcc.git
// 国内镜像站克隆
// git clone https://mirrors.tuna.tsinghua.edu.cn/git/gcc.git

构建参数说明

这里只介绍主要构建参数,要了解更多请自行参考官方文档:官方构建说明

构建参数说明
–prefix=(path)用于指定编译后GCC安装到哪个地方,默认为/usr/local (推荐修改)
–disable-multilib指定不应构建支持不同目标变体
–enable-threads指定目标支持线程
–enable-threads=(lib)指定 lib是线程支持库。主要有aix dec lynx mipssde no posix rtems single tpf vxworks win32
–with-gmp=(path to gmp)指定gmp安装目录
–with-mpfr=(path to mpfr)指定mpfr安装目录
–with-mpc=(path to mpc)指定mpc安装路径
–with-isl=(path to isl)指定isl安装目录

准备好上面的依赖和源码后就可以类似我下面这样进行构建参数设置了

cd gcc_src_dir
mkdir build && cd build
../configure --prefix=/usr/local/gcc --with-gmp=/usr/local/gmp \
--with-mpfr=/usr/local/mpfr --with-mpc=/usr/local/mpc --with-isl=/usr/local/isl

正式构建与编译

如果上面configure没有出错,南无你可以进行下一步操作了,如果报错了,检查以下报错信息看看依赖安装目录写错没有,构建参数是否写错了,不出意外你没有报错。

// 如果想加快编译速度可指定多线程编译(应该没人会不想快点编译吧),我是8核心16线程,我就指定8吧
make -j8
// 这一步没有报错的话再执行下面的操作
sudo make install
// 现在GCC就安装在了前面--prefix指定的目录了
cd gcc_install_path/bin
./gcc --version
// 看到控制台有输出版本信息就说明安装成功了

设置环境变量与测试

以Ubuntu为例
我使用的zsh,所以可以执行以下命令设置环境变量

cd ~/ && gedit .zshrc
// 这时会弹出窗口,在文件开头添加
// export PATH=$PATH:(gcc_install_path/bin)
// gcc_install_path是你安装gcc的根目录
// 最后Ctrl + S 保存退出
source ~/.zshrc
// 重启终端然后执行 gcc --version ,看到版本信息就说明设置成功了

如果是默认终端就编辑~/.bash文件,方法类似

最后新建一个C++文件,写入最基本的hello world

g++ test.cpp -o test
./test

恭喜你,GCC安装成功了!!!

GCC的基本使用

编译选项

关于编译选项,可以看这里 GCC官方编译选项说明

一般选项

选项主要功能示例
-x [language]明确指定要编译文件的类型,而不是编译器自己推断g++ main.cp -x c++
-c编译或汇编源文件(不进行最后的链接),一般以.o后缀输出g++ -c main.cpp
-S在汇编阶段停止,以汇编代码输出源文件(不进行链接),一般以.s后缀输出g++ -S main.cpp
-E在预处理阶段停止,以预处理后的内容输出到标准输出g++ -E main.cpp
-o将输出定向到-o指定文件中g++ -S main.cpp -o main.sss
-M输出文件的依赖关系(包括库文件)g++ -M main.cpp
-MM输出文件依赖关系(不包括库文件)g++ -MM main.cpp

警告选项

选项主要功能示例
-fsyntax-only仅仅检查文件是否有语法错误,不做其他事g++ -fsyntax-only main.cpp
-fmax-errors=n指定最大错误限制为n,如果大于n就会退出编译,默认值为0g++ -fmax-errors=12 main.cpp
-W禁止所有警告(再也看不到警告信息了哈哈)g++ -W main.cpp
-Werror将警告变为错误(太严了)g++ -Werror main.cpp
-Wall启用所有有关某些用户认为可疑的构造的警告g++ -Wall main.cpp -o main

更多警告选项参考:GCC警告选项

调试选项

选项主要功能
-g以操作系统的本机格式产生调试信息。GDB可以使用此调试信息。 如果没有其他优化选项可以考虑-Og
-ggdb产生调试信息以供GDB使用。这意味着要使用可用的最具表现力的格式(DWARF,stab或本机格式(如果不支持这些格式),如果可能的话)包括GDB扩展名。

更多喧嚣参考:GCC调试选项

优化选项

选项主要功能
-O0不进行任何优化,默认选项
-O1
-O
编译器会尝试减少代码大小和执行时间,但不会执行任何占用大量编译时间的优化。
-O2进一步优化,但此选项会增加编译时间和所生成代码的性能(不会执行空间换时间的优化)
-O3优化更多
-Os减小可执行文件大小,会打开-O2所有喧嚣,除了增加文件大小的

更多选项参考:GCC优化选项

预处理器选项

选项主要功能
-D [name]预定义宏name
-U [name]取消name的任何以前的定义,该定义是内置的或随-D 选项。

更多选项参考:GCC预处理器选项

链接选项

当编译器将目标文件链接到可执行输出文件中时,链接选项才起作用。如果编译器未执行链接步骤,则它们无意义。

选项主要功能示例
-l[library]搜索名为library的库gcc main.c -lpthread -o main

更多选项参考:GCC链接选项

目录选项

选项主要功能
-I [dir]将目录dir添加到要在预处理期间搜索头文件的目录列表中
-L[dir]把dir加入到搜索库文件的路径列表中。

更多选项参考:GCC目录选项

第一次写博客,有很多不足的地方还请见谅 ~

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

Ticks_

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值