`

ACE的编译和安装,for windows、Linux

    博客分类:
  • C++
阅读更多
ACE的编译和安装,for windows、Linux2006-10-11 09:14from www.acejoy.com ACE网络编程开发论坛

一. Windows下for MSVC的安装与配置
我们用的是ACE-5.4+TAO-1.4+CIAO-0.4.zip,Windows下解压缩该压缩包到目标路径(设为D:\ACE_wrappers ),

创建文件:$ACE_ROOT/ace/config.h,增加一行:
#include "ace/config-win32.h"

如果是在Windows 9x/Me下,需要在$ACE_ROOT/ace/config.h中#include语句前加入:
#define ACE_HAS_WINNT4 0

如果想使用standard C++ header,需要在$ACE_ROOT/ace/config.h中#include语句前加入:
#define ACE_HAS_STANDARD_CPP_LIBRARY 1

如果想把MFC作为静态库链接到ACE(If you prefer to link MFC as a static library into ACE),
则需要在$ACE_ROOT/ace/config.h中#include语句前加入:
#define ACE_HAS_MFC 1

如果想生成ACE静态库或在工程中使用ACE静态库,都需要定义以下宏:
ACE_AS_STATIC_LIBS


打开工程,D:\ACE_wrappers\ace.dsw,编译生成以下库:

ace.dll/ace.lib (DLL release)
aced.dll/aced.lib(DLL debug)
acemfc.dll/acemfc.lib (MFC DLL release)
acemfcd.dll/acemfcd.lib(MFC DLL debug)

aces.lib  (Static library release)
acesd.lib (Static library debug)

这些库可分别实现了Debug/Release, MFC/Non-MFC, Static/Dynamic library.

其中前四个的dll在D:\ACE_WRAPPERS\bin目录下, 所有对应的.lib库文件在D:\ACE_WRAPPERS\ace下。

ACE是网络通讯中间件,如果机器没有装网卡,就仿真一个,比如可以从控制面板选装MS Loopback Adapter。

接下来我们创建一个新的工程,如果机器上装了不同版本的ACE,需要针对某个版本配置,方法如下:

1. 配置C/C++ tab

(1) Code Generation category中应选择合适的选项:
Multithreaded和Multithreaded DLL是for Release版的
Debug Multithreaded和Debug Multithreaded DLL是for Debug版的

(2) $(ACE_ROOT)路径的配置:
如果需要针对不同版本ACE灵活配置的话,则需要设置Preprocessor category中"Additional include directories"
这一项,指明特定版本ACE所在的路径,比如D:\ACE_wrappers

2. 链接到特定版本的ACE库。

(1) 在Project/Setting/Link的Input category下 "Additional library path"中增加特定版本的ACE库文件路径,
比如D:\ACE_wrappers\ace,然后将D:\ACE_wrappers\bin目录下对应的dll拷贝到工程文件所在路径下,或者在环境
变量PATH中加入D:\ACE_wrappers\bin。

(2) 在Project/Setting/Link的Input category下"Object/library modules" 中指定需要包含的ACE库(*.lib)


如果只装了一个ACE,可采用对所有工程都生效的缺省配置,方法如下:

1. 添加环境变量:
ACE_ROOT:  D:\ACE_wrappers
PATH 中加入:D:\ACE_wrappers\bin

2. 设置VS的路径:
Include files包含:D:\ACE_wrappers
library files包含:D:\ACE_wrappers\ace

此后,就可以在工程中指定需要包含的ACE库(*.lib)后正常使用了。


二. Linux下的安装与配置
1.安装
以用户aceuser为例
(1)下载ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz(其它版本的也一样)


(2)解压之
    #cd /home/aceuser/ace
    #tar -xzvf  ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz

(3)
  #vi /home/aceuser/.bashrc
  加入下面两行:
  export ACE_ROOT=/home/aceuser/ace/ACE_wrappers
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ACE_ROOT/ace
 
  并使这些环境变量生效(运行source 或者重新登陆)。

(4)
 
  #cd /home/aceuser/ace/ACE_wrappers/ace/
  #cp ./config-linux.h ./config.h
  #cd ../include/makeinclude/
  #ln -s ./platform_linux.GNU ./platform_macros.GNU

(5)编译
  #cd /home/aceuser/ace/ACE_wrappers/
  创建一个目录:
  #mkdir build
  #cd build
  #../configure && make && make install

  对于ACE-5.4+TAO-1.4+CIAO-0.4这个版本,不能ACE-5.4+TAO-1.4+CIAO-0.4.zip这个压缩包,否则会出现如下错误:
  ln -s libACE.so.5.4.0 libACE.so
  chmod a+rx libACE.so.5.4.0
  : command not foundpers/bin/ace_components: line 10
  '/home/aceuser/ace/ACE_wrappers/bin/ace_components: line 31: syntax error near unexpected token 'in
  '/home/aceuser/ace/ACE_wrappers/bin/ace_components: line 31: ' case $1 in
  make[1]: ***[ACE_COMONENTS] Error 2
  make[1]: Leaving directory '/home/aceuser/ace/ACE_wrappers/ace'
  make: ***[all] Error 2
  如果换成ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz就没有任何问题了

  编译时也可以根据自己的需要设置编译选项
  #make [options]
  下面是option的描述:
Option         Description
debug=1|0   Enable or disable debugging in the built library or program. Default is enabled (1).
optimize=1|0   Turn compiler optimization on or off. Default is off (0).
buildbits=bits   Explicitly select, for example, 32-bit or 64-bit build target. Default is the compiler's default for the build machine. This option works for AIX, Solaris, and HP-UX.
exceptions=1|0  Enable or disable exception handling. Default is platform specific but usually enabled (1).
  inline=1|0   Enable or disable inlining of many of ACE's methods. Default is platform specific but usually enabled (1).
templates=model  Specify how templates are instantiated. Most common values for model are automatic, the default for compilers that support it well, and explicit, requiring source code directives to explicitly instantiate needed templates (see Section 1.6.1).
  static_libs=1|0  Build and use static libraries. Default is to not build static libraries (0).

2.使用
下面介绍如何从零开始建立一个使用ACE的工程。并使之run起来

(1)编写使用了ACE的代码
(2)编写Makefile

BIN = hello_ace
FILES = Piece2 Piece3
SRC= $(addsuffix .cpp,$(FILES))
OBJ= $(addsuffix .o,$(FILES))
BUILD   = $(VBIN)
#---------------------------------------------------------
# Include macros and targets
#---------------------------------------------------------
include $(ACE_ROOT)/include/makeinclude/wrapper_macros.GNU
include $(ACE_ROOT)/include/makeinclude/macros.GNU
include $(ACE_ROOT)/include/makeinclude/rules.common.GNU
include $(ACE_ROOT)/include/makeinclude/rules.nonested.GNU
include $(ACE_ROOT)/include/makeinclude/rules.bin.GNU
include $(ACE_ROOT)/include/makeinclude/rules.local.GNU

以上的Makefile包含3个cpp文件hello_ace.cpp、Piece2.cpp和Piece3.cpp

(3)编译
   #make
  如果程序没有任何问题,现在程序应该就可以运行了。

分享到:
评论

相关推荐

    MinGW版ACE编译好的库(DLL版)

    在本压缩包中,提供的“MinGW版ACE编译好的库(DLL版)”指的是专门为MinGW编译环境构建的动态链接库(DLL)版本。MinGW(Minimalist GNU for Windows)是Windows上的一种GCC(GNU Compiler Collection)移植,它提供...

    ACE最全学习资料对应代码

    在Linux环境中,ACE通常通过编译源代码来安装,这使得它能够充分利用操作系统的特性。同时,由于ACE是跨平台的,因此在Windows上同样可以运行,只是需要进行一些适应性的配置。在Windows上使用ACE可能需要安装Visual...

    ACE 文件流读取

    注意,由于ACE库的跨平台特性,上述代码应该能在多种操作系统环境下运行,包括但不限于Windows、Linux和Unix等。然而,具体使用ACE库时,可能需要根据实际环境调整编译选项和链接库。 在实际项目中,为了提高代码的...

    winrar fou linux

    总的来说,WinRAR for Linux是Windows用户转向Linux环境后的一个理想选择,它提供了熟悉的界面和功能,帮助用户无缝过渡到Linux平台的文件压缩和解压操作。尽管Linux系统自带的工具已经足够强大,但对于习惯WinRAR...

    tao-ace-rtai-port-0.3-rc1.tar-源码.rar

    【描述】"tao-ace-rtai-port-0.3-rc1.tar-源码.rar" 指出这是一个RAR压缩文件,通常用于在Windows环境中打包和压缩文件。不过,文件名中的".tar"后缀表明里面还有一个tar文件,这通常是Unix/Linux系统中用来打包多个...

    make for msysgit

    标题 "make for msysgit" 指的是在MSYSGit环境下安装和使用GNU `make`工具的过程。MSYSGit是Windows上一个流行的Git开发环境,它提供了与Linux/Unix系统相似的命令行接口,使得开发者能够在Windows上无缝地使用Git。...

    c++开发手册

    - **安装**:遵循官方文档中的步骤进行编译和安装。 - **配置**:根据不同的开发环境(如 Visual Studio)进行必要的设置。 **1.4 Blitz (高效率的数值计算函数库)** - **简介**:Blitz 是一个专注于数值计算的...

    C++开源跨平台类库集

    - **MinGW** (Minimalist GNU for Windows):一个轻量级的GNU工具链,用于在Windows上编译C/C++程序。 - **Dev-C++**:一个基于MinGW的IDE,提供了代码编辑、编译和调试等功能。 - **Eclipse CDT**:Eclipse是一个...

    网管教程 从入门到精通软件篇.txt

    Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...

Global site tag (gtag.js) - Google Analytics