下载源代码到/usr/local/src:
wget -cftp://download.dre.vanderbilt.edu/previous_versions/ACE-6.0.3.tar.gz
tar -zxvf ACE-6.0.3.tar.gz
sudo chmod -R 777 ./ACE_wrappers/
sudo apt-get install build-essential
sudo apt-get install libssl-dev
ln -s /usr/lib/libssl.so.0.9.8b /lib/libssl.so.0.9.8b
sudo apt-get install automake
sudo apt-get install libtool
两种方式我都编译过,经过实验,还是传统build方式靠谱,具体编译方法参考下文:
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#unix
UBuntu下面的设置环境变量有所区别,可以预先在~/.bashrc文件中配置:
export ACE_ROOT=/usr/local/src/ACE_wrappers
export PATH="$ACE_ROOT/bin:$PATH"
export ACE_INCLUDE=/usr/local/include/ace
LD_LIBRARY_PATH=$ACE_ROOT/lib:/usr/lib
export LD_LIBRARY_PATH
然后运行source ~/.bashrc 生效。
注意在$ACE_ROOT/include/makeinclude/platform_macros.GNU文件里添加一行:
INSTALL_PREFIX = /usr
因为这些库安装在/usr目录下比/usr/local下方便其他程序使用。
make install的时候会提示缺少权限,将/usr/include,/use/share,/usr/lib目录权限放开,比如:
sudo chmod -R 777 /usr/include
最后执行make install(如果是UBuntu Desktop用户,不要使用sudo)
cd /usr/local/src/ACE_wrappers/netsvcs make 在servers中将出现ace_netsvcs程序。
假定日志服务器运行在192.168.30.16上,修改svc.conf文件,让其将日志写入到当前目录,文件名mm.log,其实就是修改第一行的策略配置 dynamic Logger Service_Object * ACE:_make_ACE_Logging_Strategy() "-w -s foobar -f VERBOSE|STDERR|OSTREAM -s mm.log"
假定你的日志客户端位于192.168.30.19上,你首先需要运行一个netsvcs程序,但是配置文件修改一下,使它成为代理,将日志消息转发给30.16上的日志服务器。通过代理,可以避免过多的连接对日志服务器造成较大的压力。 那么看一下如何修改svc.conf文件。 首先注释掉下面一行,禁止它称为日志服务器: # dynamic Server_Logging_Service Service_Object * netsvcs:_make_ACE_Server_Logging_Acceptor() active "-p 20009"
然后在下面一行增加 -h 192.168.30.16,使得代理知道转发谁。 dynamic Client_Logging_Service Service_Object * netsvcs:_make_ACE_Client_Logging_Acceptor() active "-p 20009 -h 192.168.30.16"
在30.19上直接运行客户端程序,稍后就能看到日志出现在30.16服务器上。 chenshu@chenshu-ubuntu:/usr/local/src/ACE_wrappers/netsvcs/clients/Logger$ ./indirect_logging
禁用日志
有时候我们需要禁用日志,可以用下面的宏(在CMake中)
add_definitions(-DACE_NLOGGING)