安装环境:虚拟机-centos 7
ACE源码:http://download.dre.vanderbilt.edu/
我选择的是ACE+TAO.tar.gz FTP下载Full源码,之前下载的Sources only源码里面没有makefile,不知为何~
安装参考:http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#unix
一
Install GNU make 3.79.1 略,虚拟机自带编译器的。
二
把下载好的安装包解压,得到一个ACE_wrappers目录
修改环境变量 vim /etc/profile 追加
export ACE_ROOT=/home/...your path.../ACE_wrappers
export LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH
注意要source
三
新建文件 $ACE_ROOT/ace/config.h 里面写上一行:
#include "ace/config-linux.h"
四
新建文件 $ACE_ROOT/include/makeinclude/platform_macros.GNU, 里面写上两行
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
INSTALL_PREFIX = /usr/local
五
在ACE_ROOT 下 make ,此处可能遇到几个问题
1,error while loading shared libraries: libACE
解决办法
cp -a lib/libACE.so.6.4.0 /usr/lib/libACE.so.6.4.0
cp -a lib/libACE.so.6.4.0 /usr/local/lib/libACE.so.6.4.0
2,/usr/local/ACE_wrappers/apps/gperf/tests/test.cpp:28: undefined reference to
`in_word_set(char const *, unsigned int)‘
collect2: ld returned 1 exit status
make[4]: *** [cppout] Error 1
make[4]: Leaving directory `/usr/local/ACE_wrappers/apps/gperf/tests‘
解决办法
我直接改了这个test.cpp文件,修改in_word_set函数(函数名也改了,new_in_word_set),完善定义与调用。
六
make install
七
写个例子测试一下 创建helloACE.cpp
#include "ace/Log_Msg.h"
int ACE_TMAIN(int argc, char* argv[])
{
ACE_DEBUG((LM_DEBUG, ACE_TEXT("Hello ACE!\n")));
return 0;
}
编译:g++ -c -I /usr/local/ACE/include helloACE.cpp -o helloACE.o
链接:g++ -L /usr/local/ACE/lib/ -lACE helloACE.o -o helloACE
执行: ./helloACE,输出:Hello ACE 表示 ACE可用