C++远端开发环境手动编译安装(centos7)

安装

背景

        直接使用yum安装,无法安装指定的版本,因为很多版本并没有在镜像仓库中,所以此处进行手动安装指定版本

使用VMWare安装centos7

准备centos镜像

可以自行搜索下载地址,阿里云的也可以

下载VmWare,社区版即可

可以自行搜索下载地址

新建虚拟机

选择镜像目录位置

设置虚拟机名称和安装路径

后续就一致下一步使用默认值即可,后续需要的时候再做调整

选择语言

磁盘配置确认

需要点进去,然后点击done确认,然后点击开始安装

设置root密码

输入密码之后,点击确认,开始安装

后续等待安装完成,然后点击reboot即可

启用网卡设备

此处主要是为了后续能够通过外部工具连接虚拟机

修改文件/etc/sysconfig/network-scripts/ifcfg-ens33中的ONBOOT=yes

重启网络服务
systemctl restart network
配置yum仓库

直接将如下内容覆盖原有的/etc/yum.repos.d/CentOS-Base.repo文件

注意:本机是X86_64并且是centos7环境
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#
 
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
        http://mirrors.aliyuncs.com/centos/7/os/x86_64/
        http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-7 - Updates - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/
        http://mirrors.aliyuncs.com/centos/7/updates/x86_64/
        http://mirrors.cloud.aliyuncs.com/centos/7/updates/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-7 - Extras - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/extras/x86_64/
        http://mirrors.aliyuncs.com/centos/7/extras/x86_64/
        http://mirrors.cloud.aliyuncs.com/centos/7/extras/x86_64/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-7 - Plus - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/centosplus/x86_64/
        http://mirrors.aliyuncs.com/centos/7/centosplus/x86_64/
        http://mirrors.cloud.aliyuncs.com/centos/7/centosplus/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#contrib - packages by Centos Users
[contrib]
name=CentOS-7 - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/contrib/x86_64/
        http://mirrors.aliyuncs.com/centos/7/contrib/x86_64/
        http://mirrors.cloud.aliyuncs.com/centos/7/contrib/x86_64/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 清理yum缓存
yum clean all
 刷新yum
yum update

安装WGET

yum install -y wget

安装GCC

新建一个目录并且进入该目录
mkdir ~/software;cd ~/software
下载gcc安装包

可以在如下地址选择需要的版本,此处选择10.5.0版本

Index of /gnu/gcc

wget https://ftp.gnu.org/gnu/gcc/gcc-10.5.0/gcc-10.5.0.tar.gz
解压gcc安装包
tar -xvf gcc-10.5.0.tar.gz
进入解压后的文件夹
cd gcc-10.5.0
下载gcc 依赖项
yum install make bzip2 curl file gcc gcc-c++ glibc-devel glibc-static libmpc-devel mpfr-devel libstdc++-devel libatomic libatomic-devel perl-ExtUtils-MakeMaker perl-Test-Simple perl-File-Temp perl-Time-HiRes perl-Path-Tiny perl-Getopt-Long perl-File-Copy-Recursive perl-Module-BuildTiny texinfo bison flex libmpc libmpfr libgmp zlib-devel

注意:此处需要先下载一个其他版本的gcc,方便后续进行源码编译

下载gcc前置依赖项
./contrib/download_prerequisites
配置gcc
./configure --prefix=/usr/local --enable-bootstrap --enable-languages=c,c++,fortran --disable-multilib --enable-shared --with-system-zlib --without-included-gettext
编译gcc
make -j$(nproc)

上图为编译完成的示例,注意:若编译过程中出现其他报错,一般是依赖项错误,可以自行根据错误信息检索解决方法

执行安装
make install

上图为安装完成的示例,注意:若过程中出现其他报错,可以自行根据错误信息检索解决方法

配置环境变量

因为是安装在/usr/local下,所以此处不需要单独配置环境变量,其他目录请自行检索配置方式

卸载低版本的gcc

因为前面下载依赖项时,已经通过yum下载了低版本的gcc,若不删除,可能会导致后续在编译项目时使用到低版本的gcc,所以此处将其卸载掉

查询gcc是否已经安装,如下发现安装的时4.8.5版本

yum list installed|grep gcc

卸载gcc

yum remove gcc -y

再次查看是否存在yum安装的gcc,发现没有了,则说明卸载完成了,此时就能保证后续会直接使用自己安装的gcc了

验证安装
gcc --version

安装clang

注意:gcc和clang大家按照自己的需求进行选择一个即可

新建一个目录并且进入该目录

前面已经创建了该目录,所以此处可以不做执行

mkdir ~/software;cd ~/software
安装python3

因为后续安装clang需要用到高版本的python

下载安装包
wget https://registry.npmmirror.com/-/binary/python/3.9.0/Python-3.9.0.tgz
解压
tar -xzf Python-3.9.0.tgz
进入解压后的目录
cd Python-3.9.0
配置
./configure --prefix=/usr/local/python3
安装
make && make install

检查版本

发现版本还是之前的低版本,因为yum 包管理器依赖于Python来运行。如果你移除了Python,那么yum自身也会被删除,因为它是用Python编写的。所以此处不能卸载,只能通过软连接的方式进行版本更新

python --version

备份原有的链接
mv /usr/bin/python /usr/bin/python_2.7.5
指向新链接
ln -s /usr/local/python3/bin/python3.9 /usr/bin/python
再次检查版本

此时已经变为新版本,说明安装成功

python --version

修改yum

因为yum使用的是python2,所以需要修改yum,否则会导致yum不可用,分别修改/usr/bin/yum和 /usr/libexec/urlgrabber-ext-down

将文件头修改为python_2.7.5(也就是前面备份的python文件),然后保存即可,后续yum则不会再受到影响

下载llvm安装包

Releases · llvm/llvm-project · GitHub

此处选择的是19.1.2版本,其他版本可以自行选择

将下载得到的压缩包上传到linux节点
解压安装包
tar -xvf llvm-project-19.1.3.src.tar.xz
进入解压后的目录
cd llvm-project-19.1.3.src

解压后的目录内容如下所示

创建build目录并且进入build目录
mkdir build;cd build
配置编译选项

注意:编译过程中若提示python或者gcc版本不对,则一般情况是因为之前yum安装的版本不正确,可以根据前面提到的重新挂载python以及通过yum卸载老版本的gcc完成,然后重新进行编译即可

cmake -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lld;mlir" ../llvm

配置完成后如下所示

编译
make -j$(nproc)

编译需要花一些时间,题主花了3小时,耐心等待即可,编译完成后的结果如下所示

安装
 make install

查看版本

至此安装完成

clang --version

安装GDB

 新建一个目录并且进入该目录

前面已经创建了该目录,所以此处可以不做执行

mkdir ~/software;cd ~/software
下载gdb安装包

 可以在如下地址选择需要的版本进行安装,此处选择10.1版本

https://ftp.gnu.org/gnu/gdb/

wget https://ftp.gnu.org/gnu/gdb/gdb-10.1.tar.gz
解压安装包
tar -xvf gdb-10.1.tar.gz
进入解压后的文件夹
cd gdb-10.1
下载gdb依赖项
yum install -y ncurses-devel readline-devel python-devel expat-devel
配置gdb
./configure --prefix=/usr/local --with-python --with-expat
  • --prefix=/usr/local: 指定安装目录。
  • --with-python: 指定使用 Python 支持。
  • --with-expat: 指定使用 Expat 支持。
编译gdb
make -j$(nproc)

上图为编译完成的示例,注意:若编译过程中出现其他报错,一般是依赖项错误,可以自行根据错误信息检索解决方法

执行安装
make install

上图为安装完成的示例,注意:若过程中出现其他报错,可以自行根据错误信息检索解决方法

配置环境变量

因为是安装在/usr/local下,所以此处不需要单独配置环境变量,其他目录请自行检索配置方式

验证安装
gdb --version

预期能够输出如下版本信息

安装cmake

  新建一个目录并且进入该目录

前面已经创建了该目录,所以此处可以不做执行

mkdir ~/software;cd ~/software
下载cmkae安装包

 可以在如下地址选择需要的版本进行安装,此处选择3.21.0版本

Releases · Kitware/CMake · GitHub

 

解压安装包
tar -xvf cmake-3.21.0.tar.gz
 进入解压后的文件夹
cd cmake-3.21.0
下载cmake依赖项
yum install -y make bzip2 curl gzip libarchive-devel perl openssl-devel
配置cmake
./bootstrap --prefix=/usr/local

/usr/local 代表安装目录

注意:若出现下述错误,说明是libstd++版本不配套,一般是链接有问题,需要重建/usr/lib64/libstdc++.so.6链接

解决ibstdc++链接问题

1、查看当前的libstd++版本,发现档期那版本较低,所以才会出现上述错误

strings /usr/lib64/libstdc++.so.6 |grep GLIBCXX

2、找到最高版本的路径

find / -name "libstdc++.so*"

3、删除/usr/lib64下现有的文件和链接

rm /usr/lib64/libstdc++.so.6;rm /usr/lib64/libstdc++.so.6.0.19

4、拷贝文件/usr/local/lib64/libstdc++.so.6.0.28到/usr/lib64/

cp /usr/local/lib64/libstdc++.so.6.0.28 /usr/lib64/

5、新建链接

ln -s /usr/lib64/libstdc++.so.6.26 /usr/lib64/libstdc++.so.6

6、重新执行配置操作,然后再继续后续步骤即可

./bootstrap --prefix=/usr/local
编译cmake
make -j$(nproc)

上图为编译完成的示例,注意:若编译过程中出现其他报错,一般是依赖项错误,可以自行根据错误信息检索解决方法

执行安装
make install

上图为安装完成的示例,注意:若过程中出现其他报错,可以自行根据错误信息检索解决方法

配置环境变量

因为是安装在/usr/local下,所以此处不需要单独配置环境变量,其他目录请自行检索配置方式

验证安装
cmake --version

Clion配置

配置工具链

设置远程环境信息

设置编译工具的可执行文件路径

可以根据自己机器上文件的路径进行设置即可

如下为配置完成后的示例

配置deployment(可选)

注意:不做deployment配置,那么clion会自动在/tmp下创建项目临时目录,用于远程项目编译和执行

添加sftp配置

选择环境

此处直接选择前面配置的环境即可

添加地址映射

保存退出,此时,配置完成

本地点击编译,便会将信息自动同步到远端

本地启动项目

至此,所有配置完成,即可在本地基于远端的编译组件进行开发了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值