麒麟V10 arm cpu aarch64 下编译 RocketMQ-Client-CPP 2.2.0

国产自主可控服务器需要访问RocketMQ消息队列,最新的C++SDK是2020年发布的 rocketmq-client-cpp-2.2.0 这个版本支持TLS模式。 用默认的版本安装遇到一些问题,记录一下。

下载Releases · apache/rocketmq-client-cpp · GitHubhttps://github.com/apache/rocketmq-client-cpp/releases

操作系统信息:

复制代码
#uname -p
aarch64
#uname 
Linux
安装编译需要的工具
#yum install gcc gcc-c++ cmake automake autoconf libtool 

一是默认的boost_1_58_0编译无法通过。检测到的CPU变成了x64,未能检测出arm。使用boost_1_72_0 (更高的版本更改较大,删除了boost_1_72_0.tar.gz\boost_1_72_0\boost\detail\endian.hpp文件,后面编译通不过 )

boost-1_70_0

二是默认的openssl-1.1.1d编译通过,链接时报错:

bash 复制代码
/usr/bin/ld: ../../bin/lib/libcrypto.a(sha1-armv8.o): relocation R_AARCH64_PREL64 against symbol `OPENSSL_armcap_P' which may bind externally can not be used when making a shared object; recompile with -fPIC
../../bin/lib/libcrypto.a(sha1-armv8.o): In function `sha1_block_armv8':
(.text+0x1240): dangerous relocation: unsupported relocation

更新为openssl-1.1.1w版本。

三是将依赖的文件解压后放到rocketmq-client-cpp目录

bash 复制代码
#unzip rocketmq-client-cpp-2.2.0.zip
#mv boost_1_72_0.tar.gz jsoncpp-0.10.7.zip openssl-1.1.1w.tar.gz ./rocketmq-client-cpp-2.2.0

依赖库boost文件可以从 https://sourceforge.net/projects/boost/files/boost/1.72.0/https://sourceforge.net/projects/boost/files/boost/1.72.0/下载。

RocketMQ-Client-CPP2.2.0编译依赖库资源-CSDN文库https://download.csdn.net/download/eamon100/90487665四是修改 CMakeLists.txt,将186至190行注释掉(检测不了aarch64)

bash 复制代码
186             #    if (CMAKE_BUILD_BITS EQUAL 32)
187             #        list(APPEND CXX_FLAGS "-m32")
188             #    else () #not-condition
189             #        list(APPEND CXX_FLAGS "-m64")
190             #    endif ()

编译:

bash 复制代码
#./build.sh
相关推荐
微露清风5 分钟前
系统学习C++-第二十一讲-用哈希表封装 myunordered_map 和 myunordered_set
c++·学习·散列表
恋爱绝缘体110 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
Z1Jxxx10 小时前
加密算法加密算法
开发语言·c++·算法
乌萨奇也要立志学C++10 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法
️停云️11 小时前
【滑动窗口与双指针】不定长滑动窗口
c++·算法·leetcode·剪枝·哈希
charlie11451419111 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
IT=>小脑虎12 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
在路上看风景12 小时前
01. C++是如何工作的
开发语言·c++
码农小韩12 小时前
基于Linux的C++学习——指针
linux·开发语言·c++·学习·算法
小L~~~12 小时前
绿盟校招C++研发工程师一面复盘
c++·面试