Arm64版本的centos编译muduo库遇到的问题的归纳

环境:Mac m2 pro下的VMware虚拟机中Arm64 centos

./build.sh 执行后提示如下

  • cmake -DCMAKE_BUILD_TYPE=release -DCMAKE_INSTALL_PREFIX=.../release-install-cpp11 -DCMAKE_EXPORT_COMPILE_COMMANDS=ON /root/package/muduo-master

-- Boost version: 1.69.0

-- Could NOT find Protobuf (missing: Protobuf_INCLUDE_DIR)

-- Could NOT find CURL (missing: CURL_LIBRARY CURL_INCLUDE_DIR)

-- found zlib

-- CXX_FLAGS = -g -DCHECK_PTHREAD_RETURN_VALUE -D_FILE_OFFSET_BITS=64 -Wall -Wextra -Werror -Wconversion -Wno-unused-parameter -Wold-style-cast -Woverloaded-virtual -Wpointer-arith -Wshadow -Wwrite-strings -march=native -std=c++11 -rdynamic -O2 -DNDEBUG

-- Configuring done

-- Generating done

-- Build files have been written to: /root/package/build/release-cpp11

  • make

2%\] Building CXX object muduo/base/CMakeFiles/muduo_base.dir/AsyncLogging.cc.o /root/package/muduo-master/muduo/base/AsyncLogging.cc:1:0: 错误:**unknown value** **'native' for -march** // Use of this source code is governed by a BSD-style license \^ make\[2\]: \*\*\* \[muduo/base/CMakeFiles/muduo_base.dir/AsyncLogging.cc.o\] 错误 1 make\[1\]: \*\*\* \[muduo/base/CMakeFiles/muduo_base.dir/all\] 错误 2 make: \*\*\* \[all\] 错误 2 编译提示找不到`Protobuf`和`CURL` 库,那么就安装一下 ```bash sudo yum install protobuf protobuf-devel protobuf-compiler sudo yum install libcurl-devel ``` 第二处提示 unknown value 'native' for -march 注释掉 `CMakeList.txt` 中的 `-march=native` ![在这里插入图片描述](https://file.jishuzhan.net/article/1729313765645619202/4e34458286f097810d2deb87647b310c.webp) 随后编译又提示如下错误 /root/package/muduo-master/muduo/base/LogStream.cc: 在成员函数'void muduo::LogStream::staticCheck()'中: /root/package/muduo-master/muduo/base/LogStream.cc:228:3: 错误:static assertion failed: **kMaxNumericSize is large enough** **static_assert(kMaxNumericSize - 10 \> std::numeric_limits::digits10,** \^ make\[2\]: \*\*\* \[muduo/base/CMakeFiles/muduo_base.dir/LogStream.cc.o\] 错误 1 make\[1\]: \*\*\* \[muduo/base/CMakeFiles/muduo_base.dir/all\] 错误 2 make: \*\*\* \[all\] 错误 2 这是断言错误,因为Arm架构下的centos 有 128bit 的 long double 类型 解决方法是将 `package/muduo-master/muduo/base/LogStream.h` 下的 `kMaxNumericSize` 设置为 `std::numeric_limits::digits10 + 11`, 我这里检查出 `std::numeric_limits::digits10`为33, 则将其修改为44 ![在这里插入图片描述](https://file.jishuzhan.net/article/1729313765645619202/ef9621baf5c3f5bed7b87743eaec85e0.webp) 还有有可能出现如下的编译错误 deprecated: Please use ByteSizeLong() instead 在muduo库的CMakeList中添加编译选项 `-Wno-deprecated-declarations` ![在这里插入图片描述](https://file.jishuzhan.net/article/1729313765645619202/d10417dd0afaf6b6ff28bf1560d8ab9a.webp) 最后终于编译成功了 ![在这里插入图片描述](https://file.jishuzhan.net/article/1729313765645619202/6be490f85cbfe57b13407f884c28ef10.webp)

相关推荐
zylyehuo1 小时前
C++基础编程
c++
tt5555555555552 小时前
C/C++嵌入式笔试核心考点精解
c语言·开发语言·c++
lg_cool_2 小时前
Qt 中最经典、最常用的多线程通信场景
c++·qt6.3
科大饭桶2 小时前
C++入门自学Day14-- Stack和Queue的自实现(适配器)
c语言·开发语言·数据结构·c++·容器
tt5555555555553 小时前
字符串与算法题详解:最长回文子串、IP 地址转换、字符串排序、蛇形矩阵与字符串加密
c++·算法·矩阵
yuanpan3 小时前
ubuntu系统上的conda虚拟环境导出方便下次安装
linux·ubuntu·conda
rainFFrain4 小时前
Boost搜索引擎项目(详细思路版)
网络·c++·http·搜索引擎
AOwhisky4 小时前
Linux 文本处理三剑客:awk、grep、sed 完全指南
linux·运维·服务器·网络·云计算·运维开发
long_run4 小时前
C++之模板函数
c++
Gavin_9154 小时前
从零开始部署经典开源项目管理系统最新版redmine6-Linux Debian12
linux·ruby on rails·开源·debian·ruby·redmine