ACE for linux 安装

来源:互联网 发布:windows开启samba 编辑:程序博客网 时间:2024/04/26 03:16

首先:下载ACE包,这里使用ACE-5.8.tar.gz,其他下载地址:http://download.dre.vanderbilt.edu/previous_versions/

这里只安装了ACE,其他的包没有涉及。

1.在目录$HOME/ACE中解压ACE-5.8.tar.gz, tar -xvf ACE-5.8.tar.gz,当前目录下生成目录ACE_wrappers。我的环境下:$HOME/ACE == /home/worker/ACE

2. 设置ACE_ROOT环境变量:(可以在/etc/profile中设置(我在这里设置),也可以在个人home目录下的.bash_profile里设置)

    ACE_ROOT = /home/worker/ACE/ACE_wrappers
    export ACE_ROOT
2. 针对不同版本创建两个文件链接:
    在$ACE_ROOT/ace目录下:
    ln -s config-linux.h config.h
    在$ACE_ROOT/include/makeinclude/目录下:
    ln -s platform_linux.GNU platform_macros.GNU
3. 设置LD_LIBRARY_PATH环境变量:
    LD_LIBRARY_PATH = $ACE_ROOT/lib:$LD_LIBRARY_PATH
    export LD_LIBRARY_PATH
 (补允:注意是$ACE_ROOT/lib而不是$ACE_ROOT/ace,很多网站上都是写后者,貌似是不对的,至少我没有编译通过)

4. 在目录 $ ACE_ROOT中新建目录 build, mkdir  build。

   进入build目录运行配置脚本  . ./configure [options]

   常用的选项有: CXXFLAGS=-O3   --disable-debug   --disable-ace-examples   --disable-ace-tests   --without-tao

   补充:如果要接定安装路径(默认安装在/usr/local),可以再加上参数:--prefix [安装路径]

   即: . ./configure  --prefix=/usr/local/ACE   CXXFLAGS=-O3   --disable-debug   --disable-ace-examples   --disable-ace-tests   --without-tao


5. 编译#>make

   该过程可能出现有些头文件没有找到的错误,需要运行相关命令进行安装,我碰到的错误是openssl的相关头文件没有,所有需要安装libopenssl的开发包

   zypper search   *openssl*   用于查找关于openssl的所有包,挑选需要的进行安装,这里需要libopenssl-devel

   zypper  install libopenssl-devel    (这里用的是suselinux,所有采用这条命令,

                             如果是其他版本采用不同的命令,如centos  fedora: yum search *openssl*   yum install libopenssl-devel)

6. 安装 #> make install(补充:如果执行了安装,原来的$ACE_ROOT可以改为安装后的路径)

    在ACE5.5中使用Epoll:
    ACE_wrappers/ace/config-linux.h,增加一行:#define ACE_HAS_EVENT_POLL
    在应用程序的makefile中加入 -DACE_HAS_EVENT_POLL,重新make应用程序。OK,打完收工。(修正:只需要在ACE_wrappers/ace/config-linux.h,增加一行:#define ACE_HAS_EVENT_POLL就行了,没必要在每个应用程序中都加入-DACE_HAS_EVENT_POLL)

补充:ace中很多功能并没有默认编译进来,比如epoll,fastmemcpy等,因此如果要使用这些功能,必须修改config.h文件,加入相应的宏,对ace重编译。

        如果想用MSVC标准C++头,则需要在ace/config.h中增加定义:
       #define ACE_HAS_STANDARD_CPP_LIBRARY 1
      config.h文件内容添加,如下:
       #define ACE_HAS_STANDARD_CPP_LIBRARY 1     //  使用标准C++头
       #define ACE_NO_INLINE  1  //  不使用内连函数,能减小LIB和EXE的大小

7.测试.

 #include <ace/Log_Msg.h>
#include <ace/OS_main.h>

using namespace std;

int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
        ACE_DEBUG((LM_DEBUG, ACE_TEXT(“Hello World!”)));
        return 0;
}


 编译:g++ -I/usr/local/ACE/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"HelloWorld.d" -MT"HelloWorld.d" -o "demo.o" "demo.cpp"

 链接: g++ -I/usr/local/ACE/include  -L/usr/local/ACE/lib  -lACE -lrt -lpthread  -o "ACETest" demo.o

 运行:./ACETest   (补充:此时的LD_LIBRARY_PATH目录必须指向ACE的lib目录这里为/usr/local/ACE/lib,否则运行出错。

执行成功输出:Hello World!



原创粉丝点击