• ACE安装和配置


    1 -- ACE的主页以及下载链接

    下载ACE源码以及ACE的编程文档:http://www.cs.wustl.edu/~schmidt/ACE.html

    2 -- 编译前准备

    源代码包解压之后,会在该目录下生成一个名称为ACE_wrappers的子目录,该目录是发行包的顶级目录,称为$ACE_ROOT,其中包括ACE的源代码、工具和例子。ACE源代码和头文件位于$ACE_ROOT/ace目录中。
    定义:$ACE_ROOT=/usr/local/ACE/ACE_wrappers

    步骤1:设置ACE_ROOT的环境变量
    linux-m70n:vi /etc/profile
    在文件末尾添加如下内容:
    export ACE_ROOT=/usr/local/ACE/ACE_wrappers
    export LD_LIBRARY_PATH=$ACE_ROOT:$LD_LIBRARY_PATH
    保存退出:
    linux-m70n:source /etc/profile

    步骤2:在$ACE_ROOT/ace目录中创建config.h文件,添加如下内容后保存退出
    #include “ace/config-linux.h”

    步骤3:在$ACE_ROOT/include/makeinclude目录中创建platform_macros.GNU文件,添加如下内容后保存退出
    include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

    步骤4:在$ACE_ROOT目录下创建build子目录,以后经在该目录里编译ACE
    linux-m70n:cd $ACE_ROOT
    linux-m70n:mkdir build

    3 -- 配置ACE的安装选项,生成Makefile文件

    在build目录下执行configure命令,生成适合本系统的Makefile文件。配置时可以加入其他选项,具体选项使用configure –help查看,详细说明请参阅ACE_wrappers目录下的ACE-INSTALL.html文件。
    linux-m70n:cd $ACE_ROOT/build
    linux-m70n:../configure –prefix=/usr/local/ACE
    如果环境都OK的话,会正确的生成Makefile文件,如果这里出错了请参看config.log寻找具体原因。

    4 -- 编译ACE

    linux-m70n:cd $ACE_ROOT/build
    linux-m70n:make

    5 -- 安装

    将生成的头文件、库文件以及手册页安装到指定的目录中,执行命令:
    linux-m70n:make install

    6 -- 设置动态链接库,让程序正确加载ACE的动态链接库文件

    linux-m70n:vi /etc/ld.so.conf
    在ld.so.conf文件的中,加入一面一行
    /usr/local/ACE/lib
    然后,执行命令:
    linux-m70n:ldconfig

    7 -- 安装成功测试

    步骤1 编写Makefile文件
    将如下内容保存为makefile,然后将该文件存放于目录/usr/local/ACE/ACE_wrappers/examples/C++NPv1内。

    INC_ACE =-I/usr/local/ACE/include
    LIB_ACE =-L/usr/local/ACE/lib -lACE
    all:Iterative_Logging_Server Logging_Client
    Iterative_Logging_Server:Iterative_Logging_Server.cpp Logging_Handler.o  Logging_Server.o
    g++ -Wall -o Iterative_Logging_Server Iterative_Logging_Server.cpp Logging_Server.o Logging_Handler.o -I./ $(INC_ACE) $(LIB_ACE)
    Logging_Server.o:Logging_Server.cpp
    g++ -Wall -c Logging_Server.cpp -I./ $(INC_ACE) $(LIB_ACE)
    Logging_Client:Logging_Client.cpp Logging_Handler.o
    g++ -Wall -o Logging_Client Logging_Client.cpp Logging_Handler.o -I./ $(INC_ACE) $(LIB_ACE)
    Logging_Handler.o:Logging_Handler.cpp
    g++ -Wall -c Logging_Handler.cpp -I./ $(INC_ACE) $(LIB_ACE) 

    步骤2 编译程序
    执行命令如下:
    linux-m70n:make –f makefile
    步骤3 运行
    编译通过之后,在该目录会生成两个可执行文件Iterative_Logging_Server(服务端)和Logging_Client(客户端)。执行如下测试:
    在一个终端上执行命令:
    linux-m70n:./Iterative_Logging_Server 12220
    在另外一个终端上执行命令:
    linux-m70n:./Logging_Client
    然后在该终端上随意输入内容,并回车。
    在该目录下会生成一个名称为:logging_server.log的文件,该文件中包含了在客户终端上输入的内容。

    8 -- 文后附录

    在安装ACE过程中遇到的一个问题:

    configure:50033: error: cannot compute sizeof (wchar_t), 77 See `config.log' for more details.

    按照配置错误去查看config.log寻找原因,搜索wchar_t发现有如下信息:

    configure:49639: checking for wchar_t
    configure:49693: result: yes
    configure:49696: checking size of wchar_t
    configure:50015: gcc -o conftest -g -O2 -pthread -pipe   conftest.cc  >&5
    /tmp/cc9zSuj4.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
    collect2: ld returned 1 exit status
    configure:50018: $? = 1
    configure: program exited with status 1
    configure: failed program was:

    根据输出日志来看,在检测sizeof(wchar_t)的时候出错了,具体原因就是”undefined reference to `__gxx_personality_v0`”。而出现这个错误的一般原因是:”__gxx_personality_v0″错误信息表示试图用gcc编译c++的代码。但”configure: failed program was:”后输出的检测代码并不是C++,而是纯C代码。但configure把这段段代码保存为了conftest.cc,也就是说必须要用g++去编译,在这里不知道为什么选择了gcc去编译,这就是出现问题的根本所在。
    使用echo $CC;echo $CXX,发现在环境变量中将CC和CXX定义为了gcc,于是准备把它修正过来:
    vi /etc/profile
    将CC和CXX前加上#,或者直接删除掉
    source /etc/profile

    修改完毕后,重新配置,即可!

  • 相关阅读:
    js运算符优先级
    整理HTML的一些基础
    NSIS学习-Push&Pop(转发)
    NSIS学习-标记
    关于python中文报错的解决办法
    JDK和JRE的区别-zz
    ZZ-selenium RC for python环境搭建
    庞果网(最小操作数)
    python win32com在读取word文档时,遇到的问题
    python 如何将ppt和word转化为txt文档
  • 原文地址:https://www.cnblogs.com/motadou/p/1596726.html
Copyright © 2020-2023  润新知