欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

新塘N32926 rabbitmq-c编译

程序员文章站 2024-01-23 18:38:04
...

1.问题概述

项目里需要使用N32926和服务器进行消息通讯,采用了rabbitmq进行通信。因此挑选了rabbitmq-c作为客户端。编译时碰到了许多问题在这里记录一下。

2.openssl不兼容问题

rabbitmq-c官方宣称只需要0.9.8以上的openssl即可,但是直接使用原产自带的arm-linux-gcc-4.2包编译,编译失败。如果不编译带有openssl的版本,倒是可以成功的。想到很可能需要使用传输中的加密功能,因此想解决这个问题。
实际上openssl的0.9.8是一个大版本,从0.9.8a到0.9.8zh。因此猜测是较老的0.9.8版。因此从上面的连接下载该版本的源码进行编译后,获得了libcrypto.a,libcrypto.so,libcrypto.so.0.9.8,libssl.a,libssl.so,libssl.so.0.9.8等几个动态链接库文件以及include目录下的头文件,覆盖掉原编译器包自带的库文件。
编译源码时,编译参数也很令人头疼,网上找了半天,适合自己用的是这个参数(当然,生成的路径可以自己调整):

CC=arm-linux-gcc ./config no-asm shared --prefix=~/openssl --openssldir=~/openssl/ssl

3.RabbitMQ编译的其他问题

接下来编译带有openssl的rabbitmq时,又出现了一个报错。提示是在

FIPS_mode_set()

函数内部的,设置了一个openssl的flag。查了半天fips是什么,捣鼓了半天也没弄好。最后通过代码查找功能发现,整个rabbitmq库只有这一个地方和fips扯上关系,而这个函数做的唯一一件事就是关掉了fips。所以我就干脆把这个函数内部的代码注释掉,问题解决,编译成功。

相关标签: 嵌入式开发