现在的位置: 首页 > 综合 > 正文

ActiveMQ-CPP在UNIX环境下的编译

2013年07月17日 ⁄ 综合 ⁄ 共 2422字 ⁄ 字号 评论关闭

        Solaris下包的解压,如要解压apr-1.4.2.tar.gz,用如下命令将把源码解压到apr-1.4.2文件夹下

        $gunzip apr-1.4.2.tar.gz

        $gtar xvf apr-1.4.2.tar   (tar命令解压遇到长文件名会有问题,见文章最后)

       

        以下make最好用gmake替代,否个个别编译会有问题。

 

        如果提示找不到make或gmake命令,请先设置PATH变量:

        PATH=/usr/bin:/usr/local/bin:/usr/ucb:/etc:/usr/sbin:/usr/bin:/usr/sfw/bin:/usr/ccs/bin:/opt/

        (1) 编译安装cppunit-1.12.1 ,切换至该目录。执行./configure --prefix=/usr/local/cppunit/ ,执行make,再执行make install 进行安装。这时可以到/usr/local下查看会生成cppunit目录。

        在linux能正常编译,但在solaris下make时遇到点问题,报错:

        ../../include/cppunit/portability/FloatingPoint.h:43: error: `finite' undeclared (first use this function)
        解决办法:找到include/cppunit/portability/FloatingPoint.h,在前面加入#include <ieeefp.h> 即可

 

        (2) 编译安装apr-1.4.2 ,切换至该目录。执行./configure --prefix=/usr/local/apr/ ,执行make,再执行make install 进行安装。这时可以到/usr/local下查看会生成apr目录。

   (3)编译安装apr-util-1.3.9,切换至该目录。执行./configure --prefix=/usr/local/aprutil --with-apr=/usr/local/apr/,执行make,执行make install。这时可以到/usr/local下查看会生成apache目录。

        (4)编译安装apr-iconv-1.2.1 ,切换至该目录。执行./configure --prefix=/usr/local/apr-iconv/  --with-apr=/usr/local/apr/,执行make,再执行make install 进行安装。这时可以到/usr/local下查看会生成apr-conv目录。

        (5)编译安装openssl 1.0.0a ,切换至该目录。执行./config --prefix=/usr/local/openssl/,执行sudo make,再执行sudo make install 进行安装。这时可以到/usr/local下查看会生成openssl目录。

        (7)编译安装expat, 切换至该目录。执行./configure --prefix=/usr,执行sudo make,再执行sudo make install 进行安装.

        expat下载地址:http://prdownloads.sourceforge.net/expat/expat-1.95.7.tar.gz

        (8)编译安装ActiveMQ-CPP ,切换至该目录。执行./configure --prefix=/usr/local/ActiveMQ-CPP --with-apr=/usr/local/apr/ --with-apr-util=/usr/local/aprutil --with-cppunit=/usr/local/cppunit --with-openssl=/usr/local/openssl,执行make,在执行make install 进行安装。这时可以到/usr/local下查看会生成ActiveMQ-CPP目录。

 

我下的是ActiveMQ-CPP 3.2.1,源代码有些问题,google了一下,有人遇到同样的问题:

http://old.nabble.com/-jira--Created%3A-(AMQCPP-303)-SEGFAULT-on-startup-(before-main)-td29184816.html

并且ActiveMQ很快更新了相关代码:

https://issues.apache.org/activemq/browse/AMQCPP-303?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

根据其中的链接找到InetAddress.h和InetAddress.cpp,更新本地的相应文件即可。

然后重新编译ActiveMQ-CPP,生成新的库文件及example,运行example,ActiveMQ通信成功!

 

我在solaris 5.10下编译ActiveMQ-CPP时遇到make错误,具体如下:

gmake[2]: *** No rule to make target `activemq/wireformat/openwire/marshal/v1/ActiveMQBlobMessageMarshaller.cpp', needed by `activemq/wireformat/openwire/marshal/v1/libactivemq_cpp_la-ActiveMQBlobMessageMarshaller.lo'.  Stop.

 

原因是用tar命令解压源码包的时候出了问题,文件名太长的话会被截取,解决办法是用gtar命令解压就ok了。

 

抱歉!评论已关闭.