麒麟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
相关推荐
void_sk1 小时前
C/C++复习--C语言中的函数详细
c语言·c++·算法
晨曦学习日记1 小时前
C++学习笔记
c++·笔记·学习
李匠20242 小时前
C++GO语言微服务之gorm框架操作MySQL
开发语言·c++·后端·golang
越甲八千2 小时前
通俗的理解MFC消息机制
c++·mfc
千里镜宵烛2 小时前
C++ 哈希表
开发语言·数据结构·c++·哈希算法·散列表
努力学习的小廉2 小时前
【C++】 —— 笔试刷题day_27
开发语言·c++
双叶8362 小时前
(51单片机)LCD显示红外遥控相关数字(Delay延时函数)(LCD1602教程)(Int0和Timer0外部中断教程)(IR红外遥控模块教程)
c语言·数据库·c++·单片机·嵌入式硬件·mongodb·51单片机
无聊的小坏坏2 小时前
【C++】string类
c++
Despacito0o3 小时前
QMK键盘固件配置详解
c++·计算机外设·mfc
凌祈丶微光3 小时前
【C++】【数据结构】【API列表】标准库数据结构
数据结构·c++·标准库