Linux 下ACE的构建
来源:互联网 发布:mac 所有应用 编辑:程序博客网 时间:2024/05/22 03:53
Linux 下ACE的构建
1. 设置环境变量ACE_ROOT,命令如下:
“vi /etc/profile” ,在“export PATH USER….”后加入4行
ACE_ROOT=/opt/ACE
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/aceLD_LIBRARY_PATH
export LD_LIBRARY_PATH
完 成后将/etc/profile执行一次,命令:“chmod 555 /etc/profile”,“/etc/profile”。这样我们的ACE_ROOT就设置好了,可以用如下命令查看ACE_ROOT是否设置好了: “echo $ACE_ROOT” ,这个时候最好reboot启动一次linux。
2. 解压ACE.tar.gz包:
不 要自己手工将ACE.tar.gz包完全解开,特别强调不要完全解开,后面可以看到安装脚本会给我们解开它的;如果你手工解开全部,安装脚本将会将你的解 压缩目录删除的!我们要做的事就只是将ACE.tar.gz包中的ACE-install.sh安装脚本单独解出来,并对其修改。我们只要这一个文件就可 以。用mkdir建目录,如/home/my/ACE,然后将你的ACE.tar.gz放在此目录下(用cp命令拷贝或mv命令移动到此目录)。注意这个 目录将是你的一个存放ACE.tar.gz的目录,安装脚本会来这个目录找这个文件的,这个目录和ACE_ROOT是不一样的,且ACE- install.sh也提示不要将这两个目录设置成同一个目录。ACE_ROOT将是我们的安装目标目录。
3. 从ACE.tar.gz解压出单个文件ACE-install.sh,命令如下:
“tar –zxvf ACE+TAO+CIAO.tar.gz ACE_wrappers/ACE-install.sh”
解 好后,会出来一个新的子目录“ACE_wrappers”。此时可以先将ACE-install.sh移到外面的目录来:“mv /ACE_wrappers/ACE-install.sh .” “.”代表当前目录。当然ACE-install.sh在什么路径下是没什么影响的,因为我们要对ACE-install.sh的内容进行修改的,里面有 很多路径要修改。现在在/home/my/ACE就有了ACE-install.sh,我们现在用vi对其进行修改,修改前自己可以先备份一个。命令: “cp ACE-install.sh ACE-install.sh.bak”,“vi ACE-install.sh”先找到“MY_ACEDIR=${HOME}/aceconfig”,将其改成“MY_ACEDIR= /home/my/ACE”,就是改成我们自己建的、放有ACE.tar.gz文件的目录,之后去掉前面的注释“#”号。接着在下面一点,找到 “MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h”,将其修改成“MY_ACE_CONFIG=config- linux.h”,即改成linux下的配置文件。继续改,找到“MY_ACE_GNU_MACROS=platform_sunos5_sunc++. GNU”,将其改成“MY_ACE_GNU_MACROS=platform_linux.GNU”。这个是各种操作系统平台下的GNU宏文件设置。文件 修改完毕,保存退出“:wq”。
4. 安装ACE:
此时应该是在/home/my/ACE目录下,我们执行: h./ACE-install.sh
此 后将是较长时间的解包、编译等待时间。这个过程将不会出现任何错误,因为安装脚本将为我们做很多事情,如:生成config.h,生成 platform_macros.GNU。我们不需要按ACE-install.html中说的手工改东西:不用做连接“ln -s config-sunos5-sunc++-4.x.h config.h”,安装脚本会给我们做好;(题外话:Windows中没有文件连接这一说,所以要自己生成一个config.h文件,再在它的里面加一 句话“#include "ace/config-win32.h"”。)
如果编译中出现错误,如“../apps/gperf”等,请编辑$ACE_ROOT/apps下的Makefile,将其中的有关“gperf”的部分注释掉,这个东西只是一个例子,可以不去编译它。
强调一下,用ACE-install.sh来安装,会编译ACE、tests、apps等。最后会生成libACE.so及tests、apps下也会出来很多经过编译的文件。
当然如果你只是下载了ACE.tar.gz这样的单个包来安装,你可以手工改文件,再make,因为只编译ACE,工作就少了很多,手工做还可以接受。
ACE学习资料
1. ACE 程序员指南:网络与系统编程的实用设计模式 网络与系统编程的实用设计模式 ACE Programmer's Guide practical Design Patterns for Network and Systems Programming
(美)Stephen D. Huston,(美)James CE Johnson,(美)Umar Syyid著
马维达 译 中国电力出版社
2. C++网络编程 卷1:运用ACE和模式消除复杂性
C++ Network Programming Volume 1 Mastering Complexity with ACE and Patterns
[美]Douglas C.Schmidt,Stephen D.Huston /著 [美]Douglas C.Schmidt,Stephen D.Huston 著,於春景 译 华中科技大学出版社
3. C++网络编程,卷2 基于ACE和框架的系统化复用
C++ network Programming, Volume 2 Systematic Reuse with ACE and Frameworks
Douglas C.Schmidt, Stephn D.Huston /著 | 马维达 译 电子工业出版社
4. ACE的官方网站 http://www.cs.wustl.edu/~schmidt/ACE.html
5. 马维达的主页 http://www.flyingdonkey.com/
6. RIVERACE公司 http://www.riverace.com
7. 灰狐 http://www.huihoo.com/
8. ACE类库 http://dev.csdn.net/article/40/40700.shtm
常见错误
错误1:
“Cannot open include file: ace/SOCK_Acceptor.h: No such file or directory”
解决方法:
Project->settings->C/C++: Preprocessor的Additional include directories中加入$ACE_ROOT,如E:/ACE_wrappers
错误2:
“You must link against multi-threaded libraries when using ACE (check your project settings)”
解决方法:
Project->settings->C/C++: Code Generation 的Use run-time library : Debug Multithreaded Dll
错误3:
“error C2065: ACE_ERROR : undeclared identifier”
“error C2065: ACE_DEBUG : undeclared identifier”
解决方法:
在原马中加入#include ace/Log_Msg.h
错误4:“error C4716: ace_main_i : must return a value”
解决方法:
在main中加入return 0;
错误5:
“error LNK2001: unresolved external symbol __declspec(dllimport) int __cdecl”
解决方法:
Project->settings->Link->Input: Object/library Modules加入aced.lib ,Additional Library Path中加入$ACE_ROOT\ace,如E:\ACE_wrappers\ace
编译client中遇到的问题:
错误6:
error C2039: sprintf : is not a member of ACE_OS
解决方法:#include ace/OS_NS_stdio.h
错误7:error C2039: strlen : is not a member of ACE_OS
解决方法:#include ace/OS_NS_string.h
错误8:无法找到动态链接库aced.dll于指定的路径
解决方法:为系统变量PATH加上D:\ACE_wrappers\bin
静态包含:
工程-设置-C/C++-预处理程序定义中加入 ,ACE_AS_STATIC_LIBS
例1server编译后生成
server.exe 16K serverd.exe 97K servers.exe 124K serversd.exe 669K
(servers.exe较适合发布)
例2 client编译后生成
client.exe 16K clientd.exe 97K clients.exe 124K clientsd.exe 669K
(clients.exe较适合发布)
测试 clients 127.0.0.1 1919
servers 1919
如果编译器支持64位,通过什么宏定义来区分64位还是32位阿?
1. 设置环境变量ACE_ROOT,命令如下:
“vi /etc/profile” ,在“export PATH USER….”后加入4行
ACE_ROOT=/opt/ACE
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/aceLD_LIBRARY_PATH
export LD_LIBRARY_PATH
完 成后将/etc/profile执行一次,命令:“chmod 555 /etc/profile”,“/etc/profile”。这样我们的ACE_ROOT就设置好了,可以用如下命令查看ACE_ROOT是否设置好了: “echo $ACE_ROOT” ,这个时候最好reboot启动一次linux。
2. 解压ACE.tar.gz包:
不 要自己手工将ACE.tar.gz包完全解开,特别强调不要完全解开,后面可以看到安装脚本会给我们解开它的;如果你手工解开全部,安装脚本将会将你的解 压缩目录删除的!我们要做的事就只是将ACE.tar.gz包中的ACE-install.sh安装脚本单独解出来,并对其修改。我们只要这一个文件就可 以。用mkdir建目录,如/home/my/ACE,然后将你的ACE.tar.gz放在此目录下(用cp命令拷贝或mv命令移动到此目录)。注意这个 目录将是你的一个存放ACE.tar.gz的目录,安装脚本会来这个目录找这个文件的,这个目录和ACE_ROOT是不一样的,且ACE- install.sh也提示不要将这两个目录设置成同一个目录。ACE_ROOT将是我们的安装目标目录。
3. 从ACE.tar.gz解压出单个文件ACE-install.sh,命令如下:
“tar –zxvf ACE+TAO+CIAO.tar.gz ACE_wrappers/ACE-install.sh”
解 好后,会出来一个新的子目录“ACE_wrappers”。此时可以先将ACE-install.sh移到外面的目录来:“mv /ACE_wrappers/ACE-install.sh .” “.”代表当前目录。当然ACE-install.sh在什么路径下是没什么影响的,因为我们要对ACE-install.sh的内容进行修改的,里面有 很多路径要修改。现在在/home/my/ACE就有了ACE-install.sh,我们现在用vi对其进行修改,修改前自己可以先备份一个。命令: “cp ACE-install.sh ACE-install.sh.bak”,“vi ACE-install.sh”先找到“MY_ACEDIR=${HOME}/aceconfig”,将其改成“MY_ACEDIR= /home/my/ACE”,就是改成我们自己建的、放有ACE.tar.gz文件的目录,之后去掉前面的注释“#”号。接着在下面一点,找到 “MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h”,将其修改成“MY_ACE_CONFIG=config- linux.h”,即改成linux下的配置文件。继续改,找到“MY_ACE_GNU_MACROS=platform_sunos5_sunc++. GNU”,将其改成“MY_ACE_GNU_MACROS=platform_linux.GNU”。这个是各种操作系统平台下的GNU宏文件设置。文件 修改完毕,保存退出“:wq”。
4. 安装ACE:
此时应该是在/home/my/ACE目录下,我们执行: h./ACE-install.sh
此 后将是较长时间的解包、编译等待时间。这个过程将不会出现任何错误,因为安装脚本将为我们做很多事情,如:生成config.h,生成 platform_macros.GNU。我们不需要按ACE-install.html中说的手工改东西:不用做连接“ln -s config-sunos5-sunc++-4.x.h config.h”,安装脚本会给我们做好;(题外话:Windows中没有文件连接这一说,所以要自己生成一个config.h文件,再在它的里面加一 句话“#include "ace/config-win32.h"”。)
如果编译中出现错误,如“../apps/gperf”等,请编辑$ACE_ROOT/apps下的Makefile,将其中的有关“gperf”的部分注释掉,这个东西只是一个例子,可以不去编译它。
强调一下,用ACE-install.sh来安装,会编译ACE、tests、apps等。最后会生成libACE.so及tests、apps下也会出来很多经过编译的文件。
当然如果你只是下载了ACE.tar.gz这样的单个包来安装,你可以手工改文件,再make,因为只编译ACE,工作就少了很多,手工做还可以接受。
ACE学习资料
1. ACE 程序员指南:网络与系统编程的实用设计模式 网络与系统编程的实用设计模式 ACE Programmer's Guide practical Design Patterns for Network and Systems Programming
(美)Stephen D. Huston,(美)James CE Johnson,(美)Umar Syyid著
马维达 译 中国电力出版社
2. C++网络编程 卷1:运用ACE和模式消除复杂性
C++ Network Programming Volume 1 Mastering Complexity with ACE and Patterns
[美]Douglas C.Schmidt,Stephen D.Huston /著 [美]Douglas C.Schmidt,Stephen D.Huston 著,於春景 译 华中科技大学出版社
3. C++网络编程,卷2 基于ACE和框架的系统化复用
C++ network Programming, Volume 2 Systematic Reuse with ACE and Frameworks
Douglas C.Schmidt, Stephn D.Huston /著 | 马维达 译 电子工业出版社
4. ACE的官方网站 http://www.cs.wustl.edu/~schmidt/ACE.html
5. 马维达的主页 http://www.flyingdonkey.com/
6. RIVERACE公司 http://www.riverace.com
7. 灰狐 http://www.huihoo.com/
8. ACE类库 http://dev.csdn.net/article/40/40700.shtm
常见错误
错误1:
“Cannot open include file: ace/SOCK_Acceptor.h: No such file or directory”
解决方法:
Project->settings->C/C++: Preprocessor的Additional include directories中加入$ACE_ROOT,如E:/ACE_wrappers
错误2:
“You must link against multi-threaded libraries when using ACE (check your project settings)”
解决方法:
Project->settings->C/C++: Code Generation 的Use run-time library : Debug Multithreaded Dll
错误3:
“error C2065: ACE_ERROR : undeclared identifier”
“error C2065: ACE_DEBUG : undeclared identifier”
解决方法:
在原马中加入#include ace/Log_Msg.h
错误4:“error C4716: ace_main_i : must return a value”
解决方法:
在main中加入return 0;
错误5:
“error LNK2001: unresolved external symbol __declspec(dllimport) int __cdecl”
解决方法:
Project->settings->Link->Input: Object/library Modules加入aced.lib ,Additional Library Path中加入$ACE_ROOT\ace,如E:\ACE_wrappers\ace
编译client中遇到的问题:
错误6:
error C2039: sprintf : is not a member of ACE_OS
解决方法:#include ace/OS_NS_stdio.h
错误7:error C2039: strlen : is not a member of ACE_OS
解决方法:#include ace/OS_NS_string.h
错误8:无法找到动态链接库aced.dll于指定的路径
解决方法:为系统变量PATH加上D:\ACE_wrappers\bin
静态包含:
工程-设置-C/C++-预处理程序定义中加入 ,ACE_AS_STATIC_LIBS
例1server编译后生成
server.exe 16K serverd.exe 97K servers.exe 124K serversd.exe 669K
(servers.exe较适合发布)
例2 client编译后生成
client.exe 16K clientd.exe 97K clients.exe 124K clientsd.exe 669K
(clients.exe较适合发布)
测试 clients 127.0.0.1 1919
servers 1919
如果编译器支持64位,通过什么宏定义来区分64位还是32位阿?
答:#define ver ((2>>31)>0?64:32)
参考:
http://www.programfan.com/blog/article.asp?id=29494
0 0
- Linux 下ACE的构建
- Linux 下ACE的构建
- ACE的构建(linux + windows)
- linux下ACE的安装
- ACE的构建
- ACE的构建 经验
- 【ACE】Linux 和 Windows 下ACE的编译.
- ACE环境构建笔记(Linux)
- ACE环境构建笔记(Linux)
- ACE环境构建笔记(Linux)
- linux下编译debug版本的ace
- linux下ACE工具包的编译安装
- linux下编译ACE
- Linux下安装ACE
- linux下 编译 ace
- Linux 下编译ACE
- linux 下安装ACE
- LINUX下安装 ACE
- Git使用教程(三)--忽略文件
- _itemFailedToPlayToEnd: { kind = 1; new = 2; old = 0; } 引发的搜索
- Tortoise SVN常见图标含义及图标无法正常解决方法!
- centos6.4 安装VMware tools之后还是无法更新软件的问题
- 得墨忒耳定律 (Law of Demeter,缩写LoD)
- Linux 下ACE的构建
- jvm参数
- 图像傅立叶变换的物理意义(资料来自网络)
- 乘法口诀
- Java 内存区域和GC机制
- 简单工厂模式---一个简单计算器的实现
- JAVA中toString方法的作用
- c++ 编译过程
- 获取当前应用程序所在的目录