首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >centos7编译c++碰到的坑

centos7编译c++碰到的坑

作者头像
灰子学技术
发布于 2024-02-22 06:57:03
发布于 2024-02-22 06:57:03
54300
代码可运行
举报
文章被收录于专栏:灰子学技术灰子学技术
运行总次数:0
代码可运行

centos 7默认安装的工具链和LIB库都比较旧,不能很好的编译C++产品,最近踩了很多坑,下面就列一下出来。

问题1: cmake 安装新版之后,版本提示一直是旧版本的解决办法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://cmake.org/files/v3.12/cmake-3.12.3.tar.gz
tar zxvf cmake-3.*
cd cmake-3.*
./bootstrap --prefix=/usr/local
make
make install

删除旧版本,执行下面的命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake

问题2: Can't locate IPC/Cmd.pm 问题修复:

// 报错信息:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# ./config
Can't locate IPC/Cmd.pm in @INC (@INC contains: /data/thrid-party/openssl-openssl-3.0.1/util/perl /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 . /data/thrid-party/openssl-openssl-3.0.1/external/perl/Text-Template-1.56/lib) at /data/thrid-party/openssl-openssl-3.0.1/util/perl/OpenSSL/config.pm line 18.
BEGIN failed--compilation aborted at /data/thrid-party/openssl-openssl-3.0.1/util/perl/OpenSSL/config.pm line 18.
Compilation failed in require at /data/thrid-party/openssl-openssl-3.0.1/Configure line 23.
BEGIN failed--compilation aborted at /data/thrid-party/openssl-openssl-3.0.1/Configure line 23.

// 解决办法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y install perl-IPC-Cmd

问题3: boost在centos 7 上面的版本偏低是1.54.0偏低:

低版本编译一直提示boost少函数,需要升级boost的更高版本来解决

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://sourceforge.net/projects/boost/files/boost/1.78.0/boost_1_78_0.tar.gz --no-check-certificate
tar -xzvf boost_1_78_0.tar.gz
cd boost_1_78_0
./bootstrap.sh --prefix=/usr
./b2 install --with=all
# cp /usr/lib/libboost_unit_test_framework.a /usr/lib64/

问题4:centos 默认安装的gcc版本是4.8,需要安装gcc 7版本以上才行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
参考:https://gist.github.com/liuziangexit/888c818a66409e9bbe835002f3c785c7
https://www.cnblogs.com/music-liang/p/12900457.html

操作系统版本查看:

https://cloud.tencent.com/developer/article/1721171

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
devtoolset:
https://www.imlb6.com/centos-rhel-install-devtoolset/
yum install centos-release-scl -y
yum install devtoolset-9 -y
#临时覆盖系统原有的gcc引用
scl enable devtoolset-9 bash

很多提示gtest编译错误是因为 gcc使用了centos的4.8.5版本导致的,我们需要用下面的命令切换成高版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
source /opt/rh/devtoolset-9/enable
# 查看gcc版本
gcc -v

替换GCC7默认版本

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mv /usr/bin/gcc /usr/bin/gcc-4.8.5
ln -s /opt/rh/devtoolset-9/root/bin/gcc /usr/bin/gcc
mv /usr/bin/g++ /usr/bin/g++-4.8.5
ln -s /opt/rh/devtoolset-9/root/bin/g++ /usr/bin/g++
gcc --version
g++ --version

docker 更新 gcc到更高版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://stackoverflow.com/questions/67090507/how-to-install-gcc-g-9-on-centos-7-docker-centos7

问题5: centos automake 版本默认是1.13,版本过低导致的

错误提示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
make[1]: Entering directory '/data/opentelemetry-cpp/thrid-party/libevent-2.1.12-stable'
  CC       sample/sample_https_client-hostcheck.o
  CC       sample/sample_https_client-openssl_hostname_validation.o
make[1]: *** No rule to make target 'WIN32-Code/nmake/evconfig-private.h', needed by 'all-am'.  Stop.
make[1]: *** Waiting for unfinished jobs....

安装automake:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# wget http://ftp.gnu.org/gnu/automake/automake-1.16.5.tar.gz

# tar -xvf automake-1.16.5.tar.gz

# cd automake-1.16.5/

# ./configure --prefix=/usr/  //本例实际过程中添加了--prefix=/usr/

# make

# make install

# automake --version

参考文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://github.com/ketoo/NoahGameFrame/issues/60
https://blog.csdn.net/qfturauyls/article/details/109632923

问题6:libevent的代码编译

参考文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://blog.csdn.net/zhouzhiwengang/article/details/132975701

安装:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
tar -xvf libevent-2.1.12-stable.tar.gz
cd libevent-2.1.12-stable
./configure 
make
make install 
# vim /etc/procfile // 添加下面的路径配置export PKG_CONFIG_PATH=/usr/local/openssl/lib/pkgconfig# source /etc/procfile
https://www.cnblogs.com/WindSun/p/12142656.html

问题7:openssl 下载:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
wget https://www.openssl.org/source/openssl-3.0.13.tar.gz --no-check-certificate
export PATH="/usr/local/openssl/bin:${PATH}"
export OPENSSL_ROOT_DIR="/usr/local/openssl"
export OPENSSL_CRYPTO_LIBRARY="/usr/local/openssl/lib"
export OPENSSL_INCLUDE_DIR="/usr/local/openssl/include"

参考文档:https://www.cnblogs.com/276815076/p/16799078.html

其他参考文档:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 gtest:
https://installati.one/install-gtest-devel-centos-7/
 gmock:
https://installati.one/install-gmock-devel-centos-7/
 makecache介绍:
https://blog.csdn.net/A___LEi/article/details/118340579
 不同版本docker修改时区:
https://cloud.tencent.com/developer/article/1626811
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灰子学技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux(CentOS7)安装Redis6.0.1
一、环境准备 Redis官网:https://redis.io/ 历史版本:http://download.redis.io/releases/ 1、安装依赖 yum -y install gcc gcc-c++ make cmake lrzsz  2、解压redis tar zxvf redis-6.0.1.tar.gz 二、redis编译安装 1、编译redis cd redis-6.0.1 &&  make redis6需要较高版本的gcc编译 如果make失败,需要手动升级gcc版本(redis5
静谧星空TEL
2021/04/27
2.1K0
如何在 PHP 8.3 上编译安装 Event 事件驱动扩展库?
PHP Event 扩展是 PHP 的一个扩展库,用于处理事件驱动的编程。它提供了一种机制,使开发者能够创建、监听和处理事件。事件是一种在特定条件下触发的通知或动作,可以在应用程序的不同部分之间进行通信和交互。
Tinywan
2024/01/02
6810
如何在 PHP 8.3 上编译安装 Event 事件驱动扩展库?
技术分享|在Ubuntu下编译安装GreatSQL
本文首发于GreatSQL社区,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
老叶茶馆
2021/12/01
5100
CentOS 7上源码构建git遇到的几个坑
因为CentOS 7的yum自带的版本才1.8.3.1,而vs code要2.x以上,所以只能从源码构建
天地一小儒
2022/12/28
7460
大数据应用日志采集之Scribe 安装配置指南
Scribe是Facebook开源的日志收集系统,在Facebook内部已经得到大量的应用。它能从各种日志源收集日志,存储到一个中央存储系统上,便于进行集中统计分析处理。它为日志的”分布式收集,统一处理”提供了一个可扩展的,高容错的方案。scribe代码很简单,但是安装配置却很复杂,本文记录了作者实际的一次安装的过程,感觉真是不一般的琐碎,另外Scribe开源社区的版本已经是几年前的版本了,最新的维护信息一致没有看到,HDFS和Thrift的版本使用的都是比较旧的版本,考虑另开一个分支,升级一下Scribe,看到时候有没有时间了。
数据饕餮
2019/01/14
8150
CentOS8.0安装迅搜(XunSearch)引擎报错的解决办法
在一些小型项目上需要应用全文搜索引擎时,我比较喜欢使用迅搜,因为部署方便,调用简单,今天给客户部署系统安装迅搜时,竟然有报错(极少遇到报错的情况),花了一些时间查资料,终于解决了,分享一下经验
风柏杨4711
2021/03/15
8490
MySQL8.0.40源码安装
因为MySQL发布了8.0.40版本,与之前的版本相比,部分依赖包发生了变化,因此重新编译一版,也便于大家参考。
俊才
2024/10/17
7960
CentOS 7.4搭建LNMP环境
目前LNMP环境的应用非常多。在静态页面的处理上,Nginx比Apache更强;但在动态页面的处理上,Nginx并不占优势。
子润先生
2021/06/29
8620
MySQL之——源码编译MySQL8.x+升级gcc+升级cmake(亲测完整版)
最近,在CentOS 6.8服务器上编译安装MySQL 8.0.18的源码,百度了许久,发现网上的安装方式没一个可用的。基本都是基于CentOS 7.x来安装MySQL8.0,并且安装过程中会出现各种问题,按照他们的文章进行安装根本解决不了问题。更重要的一点就是,很多文章的内容一模一样!!我就纳闷了,那些发表文章的人,自己真的安装并且验证过吗?还是只是一味的抄袭呢?!
冰河
2020/10/29
2.4K0
MySQL之——源码编译MySQL8.x+升级gcc+升级cmake(亲测完整版)
Linux 服务器环境搭建
官网下载地址:https://www.oracle.com/java/technologies/downloads
默存
2024/03/22
4640
Linux 服务器环境搭建
Linux下mysql的安装与配置
1、在 Centos7 系统下使用 yum 命令安装 MySQL,需要注意的是 CentOS 7 版本中 MySQL数据库已从默认的程序列表中移除,所以在安装前我们需要先去官网下载 Yum 资源包,下载地址为:https://dev.mysql.com/downloads/repo/yum/
菲宇
2022/12/21
7880
mysql-shell for GreatSQL 8.0.27编译安装及使用
由于GreatSQL 8.0.27版本中引入MGR仲裁节点(投票节点,ARBITRATOR)特性,MySQL提供的mysql-shell无法识别该特性,因此提供mysql-shell for GreatSQL版本。
GreatSQL社区
2022/03/28
5810
Centos7 安装 Redis 6.0.8 遇坑记(Redis 编译安装)
因为我用的是最小化安装,默认是没有安装 wget 命令,所以要使用 wget 命令必须先按照该命令的包
很酷的站长
2023/02/16
1.9K0
Centos7 安装 Redis 6.0.8 遇坑记(Redis 编译安装)
shell脚本 一键源码编译安装LNMP
下载 wget https://raw.githubusercontent.com/goodboy23/shell/master/jobs/install_lnmp.sh
陈不成i
2021/06/23
9580
linux 基础学习编译安装php+my
    CentOS6.9 x86 - 64 最小化安装 配置好网络 用户 使用Xshell登录
py3study
2020/01/09
4640
Linux开发环境第三方库规划
让工作变得有条理,不乱糟糟,即使存在大量的第三方,也有章可循。简而言之,就是要保持目录的干净(如/usr/local目录),保持文件的干净(如profile文件)
一见
2018/08/10
1.4K0
ByConity build on Centos
个人走了一趟便便,发现centos 编译下最大的问题是。byconity依赖 llvm下clang,但clang 又不完全满足byconity 依赖包,一部分依赖来自于gcc lib,因此我们是在gcc基础上,进行llvm 的编译安装,并在byconity 编译时 设置cmake gcc_toolchain 指向gcc-10,如果官方有其他解决方案也可参考官方。
jasong
2024/12/19
1720
测试跑通应用性能观测通过 Skywalking 协议上报
找到 php.ini-production,复制到/usr/local/php/etc下,并改名为php.ini
相柳
2021/12/13
1.5K1
测试跑通应用性能观测通过 Skywalking 协议上报
Linux centos下编译安装Lnmp shell脚本
#!/bin/bash repo="/etc/yum.repos.d/CentOS7-Base-163.repo" if [ ! -e $repo ]; then # -e 判断文件存在;参考:Shell if 条件判断文件或目录 yum install -y wget cd /etc/yum.repos.d/ mkdir bak mv * bak #wget http://mirrors.aliyun.com/repo/Centos-7.repo #wget http://
eisc
2020/11/14
2.6K0
CentOS7下源码安装MySQL 8.x
会选择使用源码安装MySQL,想必对MySQL及其他的安装方式已经有了一定的了解,这里就不对周边信息进行过多赘述了,直接开始吧。
端碗吹水
2020/09/23
9150
CentOS7下源码安装MySQL 8.x
相关推荐
Linux(CentOS7)安装Redis6.0.1
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档