求助RabbitMQ-c中无法使用cmake编译与openssl库相关的文件

jackxmhu 2013-12-11 04:42:20
打算在嵌入式设备中移植RabbitMQ-c 客户端,该代码从https://github.com/alanxz/rabbitmq-c取得,由于以前没有使用过cmake,关闭openssl库相关文件进行编译,可以顺利编译出librabbitmq库文件,但一打开openssl库相关的文件就出现编译错误,折磨了几天,还是没有解决,向牛人求助。
进入rabbitmq-c-0.4.1文件夹后输入如下编译命令:
mkdir -p build
cd build
cmake cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make clean
cmake --build .

1.cmake cmake -DCMAKE_INSTALL_PREFIX=/usr ..
出现如下错误:
CMake Error at /usr/share/cmake-2.8/Modules/FindPackageHandleStandardArgs.cmake:70 (MESSAGE):
Could NOT find OpenSSL (missing: OPENSSL_LIBRARIES OPENSSL_INCLUDE_DIR)
Call Stack (most recent call first):
/usr/share/cmake-2.8/Modules/FindOpenSSL.cmake:99 (find_package_handle_standard_args)
CMakeLists.txt:240 (find_package)
-- Configuring incomplete, errors occurred!
找不到openssl的include文件

2.更改cmake命令,使用-D去指定库文件及include文件路径,感觉这种方法不是太合适,还有更好的方法么?
cmake -DOPENSSL_CRYPTO_LIBRARIES=/lib/libcrypto.so.0.9.8 -DOPENSSL_INCLUDE_DIR=/usr/include -DOPENSSL_SSL_LIBRARIES=/lib/libssl.so.0.9.8 -DCMAKE_INSTALL_PREFIX=/usr ..
其中libcrypto.so与libssl.so是openssl中的TLS与SSL协议部份,并放于target的/usr/lib文件夹下,/usr/include/openssl中包含openssl的所有头文件,以便其它应用需要时可以从中得到

cmake --build .还是出现如下错误:
[ 15%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_openssl.c.o
Linking C shared library librabbitmq.so
/lib/libssl.so.0.9.8: file not recognized: File format not recognized
collect2: ld returned 1 exit status
make[2]: *** [librabbitmq/librabbitmq.so.1.1.1] Error 1
make[1]: *** [librabbitmq/CMakeFiles/rabbitmq.dir/all] Error 2
make: *** [all] Error 2
文件格式不对,没有使用交叉编译

3.再次更改cmake命令,指定gcc,ar等编译环境命令所在路径,感觉这种方法还不是太合适,是否在哪直接可以指定,这个方法好土?
cmake -DOPENSSL_CRYPTO_LIBRARIES=/lib/libcrypto.so.0.9.8 -DOPENSSL_INCLUDE_DIR=/usr/include -DOPENSSL_SSL_LIBRARIES=/lib/libssl.so.0.9.8 -DCMAKE_AR=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-ar -DCMAKE_C_COMPILER=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-gcc -DCMAKE_LINKER=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-ld -DCMAKE_NM=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-nm -DCMAKE_OBJCOPY=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-objcopy -DCMAKE_OBJDUMP=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-objdump -DCMAKE_RANLIB=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-ranlib -DCMAKE_STRIP=/opt/freescale/usr/local/gcc-4.4.4-glibc-2.11.1-multilib-1.0/arm-fsl-linux-gnueabi/bin/arm-fsl-linux-gnueabi-strip -DCMAKE_INSTALL_PREFIX=/usr ..

在cmake --build .时出现以下错误:
[ 15%] Building C object librabbitmq/CMakeFiles/rabbitmq.dir/amqp_openssl.c.o
/home/hxm/share/fsl/hbm10/HBM10/ltib/rpm/BUILD/rabbitmq-c-0.4.1/librabbitmq/amqp_openssl.c:38:26: error: openssl/conf.h: No such file or directory
/home/hxm/share/fsl/hbm10/HBM10/ltib/rpm/BUILD/rabbitmq-c-0.4.1/librabbitmq/amqp_openssl.c:39:25: error: openssl/err.h: No such file or directory
/home/hxm/share/fsl/hbm10/HBM10/ltib/rpm/BUILD/rabbitmq-c-0.4.1/librabbitmq/amqp_openssl.c:40:25: error: openssl/ssl.h: No such file or directory
找不到openssl中的三个头文件,openssl明明就在target文件夹下的/usr/include/openssl中,已在OPENSSL_INCLUDE_DIR指定,为什么找不到呢?

amqp_openssl.c里面以下三个include引用openssl中的三个头文件
#include <openssl/conf.h>
#include <openssl/err.h>
#include <openssl/ssl.h>

4.在rabbitmq-c-\librabbitmq里面增加openssl库的引用还是同样的编译错误
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../../rootfs/usr/include)
include_directories(${OPENSSL_INCLUDE_DIR})

问题在哪呢?
...全文
570 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Leekwen 2014-02-20
  • 打赏
  • 举报
回复
参见我写的这个文章试下: http://blog.csdn.net/leekwen/article/details/19547663
songwsdy 2014-02-13
  • 打赏
  • 举报
回复
我也碰到此情况了,好在,我使用ccmake,是一个GUI界面,替换cmake就行。然后就像cmos一样配置,把openssl关掉就可以编译了。当然如果你项目非要使用openssl,你就得继续装依赖包了。
jackxmhu 2013-12-12
  • 打赏
  • 举报
回复
兄弟们帮忙顶下啊!
jackxmhu 2013-12-11
  • 打赏
  • 举报
回复
UP UP UP

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧