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了。