rabiitmq-c库,openssl交叉编译及错误解决

2024-5-15调试了一早上,虚拟机22.04一直报这个错,解决不掉。

export PATH=/opt/cross_chain/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin:$PATH
export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar
export RANLIB=aarch64-linux-gnu-ranlib
export CROSS_COMPILE=aarch64-linux-gnu-

git clone https://github.com/alanxz/rabbitmq-c.git
cd rabbitmq-c
mkdir build
cd build
cmake -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc -DCMAKE_INSTALL_PREFIX=/opt/rabbitmq/rabbitmq-c/install …
make

编译错误1:
root@jxh-virtual-machine:/opt/rabbitmq/rabbitmq-c/build# make
[ 2%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_api.c.o
[ 5%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_connection.c.o
[ 7%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_consumer.c.o
[ 10%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_framing.c.o
[ 13%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_mem.c.o
[ 15%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_openssl.c.o
In file included from /opt/rabbitmq/rabbitmq-c/librabbitmq/amqp_openssl.c:15:0:
/opt/rabbitmq/rabbitmq-c/librabbitmq/amqp_openssl_bio.h:10:10: fatal error: openssl/bio.h: No such file or directory
#include <openssl/bio.h>
^~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [librabbitmq/CMakeFiles/rabbitmq.dir/build.make:146: librabbitmq/CMakeFiles/rabbitmq.dir/amqp_openssl.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:884: librabbitmq/CMakeFiles/rabbitmq.dir/all] Error 2
make: *** [Makefile:146: all] Error 2
简单粗暴的方法解决:
cp /usr/include/openssl ./librabbitmq/ -rf
把系统路径下的考到本地

编译错误2:
/opt/rabbitmq/rabbitmq-c/build/librabbitmq/openssl/e_os2.h:13:11: fatal error: openssl/opensslconf.h: No such file or directory
# include <openssl/opensslconf.h>
简单粗暴的方法解决:
cp /usr/include/x86_64-linux-gnu/openssl/opensslconf.h ./librabbitmq/openssl/

编译错误3:
[ 15%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_time.c.o
[ 18%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_url.c.o
[ 21%] Linking C shared library librabbitmq.so
/usr/lib/x86_64-linux-gnu/libssl.so: error adding symbols: File in wrong format
collect2: error: ld returned 1 exit status
librabbitmq/CMakeFiles/rabbitmq.dir/build.make:274: recipe for target ‘librabbitmq/librabbitmq.so.0.15.0’ failed
make[2]: *** [librabbitmq/librabbitmq.so.0.15.0] Error 1
CMakeFiles/Makefile2:883: recipe for target ‘librabbitmq/CMakeFiles/rabbitmq.dir/all’ failed
make[1]: *** [librabbitmq/CMakeFiles/rabbitmq.dir/all] Error 2
Makefile:145: recipe for target ‘all’ failed
make: *** [all] Error 2

解决方法:
1,
编译目标架构是arm64的openssl库:
git clone https://github.com/openssl/openssl.git
cd openssl
export CC=aarch64-linux-gnu-gcc
./Configure linux-aarch64 --prefix=/opt/rabbitmq/install //其中 /opt/rabbitmq/install是您希望将 OpenSSL 安装到的目录路径。
make && make install

2,交叉编译rabbitmq-c库:

cmake -DOPENSSL_INCLUDE_DIR=/opt/rabbitmq/install/include \
  -DOPENSSL_SSL_LIBRARY=/opt/rabbitmq/install/lib/libssl.so \
  -DOPENSSL_CRYPTO_LIBRARY=/opt/rabbitmq/install/lib/libcrypto.so \
  -DOPENSSL_NO_DEPRECATED=1 \
  /opt/rabbitmq/rabbitmq-c
  
make 

编译demo:
aarch64-linux-gnu-g++ -I ./rabbitmq-c/include/ -I ./rabbitmq-c/build/include/ consumer.cpp -L /opt/rabbitmq/rabbitmq-c/build/librabbitmq -L /opt/rabbitmq/install/lib -lrabbitmq -lssl -lcrypto

编译成功

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值