國產自主可控服務器需要訪問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編譯通過,鏈接時報錯:
/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目錄
#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)
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 ()
編譯:
#./build.sh
?
?