新塘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。所以我就干脆把这个函数内部的代码注释掉,问题解决,编译成功。
上一篇: 通过ping 命令源码获取网络状态
下一篇: python 7.