﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-YGFaith-随笔分类-网络&amp;ACE</title><link>http://www.cppblog.com/YGFaith/category/9224.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 31 Dec 2008 19:55:30 GMT</lastBuildDate><pubDate>Wed, 31 Dec 2008 19:55:30 GMT</pubDate><ttl>60</ttl><item><title>ACE在linux下的安装</title><link>http://www.cppblog.com/YGFaith/archive/2008/12/31/70845.html</link><dc:creator>YG</dc:creator><author>YG</author><pubDate>Wed, 31 Dec 2008 05:37:00 GMT</pubDate><guid>http://www.cppblog.com/YGFaith/archive/2008/12/31/70845.html</guid><wfw:comment>http://www.cppblog.com/YGFaith/comments/70845.html</wfw:comment><comments>http://www.cppblog.com/YGFaith/archive/2008/12/31/70845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/YGFaith/comments/commentRss/70845.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/YGFaith/services/trackbacks/70845.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">本文详细描述了在Linux操作系统上安装和配置&#8220;自适应通信环境(ACE)&#8221;的过程和注意事项。zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">文中的描述基于RedHat Linux 9操作系统和ACE 5.4版zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">准备工作：zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">1.确保你的Linux操作系统的开发环境(gcc、make&#8230;&#8230;)是完整且可用的。zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">2.在安装ACE的过程中，可能需要root权限，因此确保你拥有root帐户的密码。zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">3.对于典型的Redhat9系统，autoconf程序的版本可能过低，你需要首先升级它。zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">&nbsp;&nbsp; 升级的步骤如下：zCkLinux联盟 </p>
<ol dir=ltr>
    <li>在控制台中输入 autoconf -V，查看你的autoconf程序的版本
    <li>如果低于2.57g，你需要到<a href="http://www.gnu.org/software/autoconf/"></a><a href="http://www.gnu.org/software/autoconf/"><font color=#ffbc00>http://www.gnu.org/software/autoconf/</font></a></a />去下载最新版本的autoconf程序，目前autoconf程序的版本是2.59
    <li>根据tarball中的安装说明，编译并安装升级autoconf程序</li>
</ol>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em">开始安装：zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">经过上面的准备工作，现在你已经具备了安装ACE的条件。下面开始正式的安装工作。zCkLinux联盟 </p>
<ol>
    <li>首先确定ACE的安装路径，并建立相应的目录。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">这里，我们把ACE安装在/home/zhc/ace/的目录下，先执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">mkdir /home/zhc/ace </p>
    <li>然后将获得的ACE源代码包解至该目录下。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">tar zxvf ACE-5.4.tar.gz /home/zhc/ace </p>
    <li>这时，在ace的目录下会建立一个名为ACE_wrappers的子目录，ACE所有的源代码、工具、和例子都在这个目录中。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">先进入该目录，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">cd /home/zhc/ace/ACE_wrapperszCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">然后建立一个子目录，用于存放ACE编译后的目标文件zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">mkdir buildzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">cd build </p>
    <li>接着,执行configure脚本，检查你的系统环境，配置并生成适合你的系统的Makefile文件。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">在执行configure脚本时，可以加入许多配置选项，其详细说明可以参看ACE_wrappers目录下的ACE-INSTALL.html文件，zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">对于Redhat9系统来说，不必加任何参数，ACE就可以很好的工作了。zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">../configure </p>
    <li>在漫长的检查和配置之后，如果没有什么问题，你就可以开始编译了。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">这一步很简单，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">makezCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">然后，泡一杯茶，静静的等待就行了。 </p>
    <li>如果编译顺利的通过(通常都会是这样的)，那么恭喜你，你已经成功了一大半了，下面要做的仅仅是以些配置工作而已。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">接下来的工作是安装，这一步是可选的，目的是把编译生成的ACE的库文件、头文件和手册页等安装到/usr/local的相应目录中去，为了今后使用的方便，我建议你还是进行这一步，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">suzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">root's passwordzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">make install </p>
    <li>安装之后，我们就可以进行最后的配置工作了。zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">首先设置环境变量ACE_ROOT，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">setenv ACE_ROOT /home/zhc/ace/ACE_wrapperszCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">注意其中的路径要根据你的实际情况而定zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">如果你不想每次都手工设定路径，可以编辑你的bash的配置文件，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">cdzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">vi .bash_profilezCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">在其中填加如下两行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">ACE_ROOT=/home/work/research/ace/ACE_wrapperszCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">export ACE_ROOT </p>
    <li>然后，在$ACE_ROOT/ace目录中创建一个名为config.h的文件，在其中包含如下一行zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">#include "ace/config-linux.h"zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">或者，简单起见，你也可以直接建立一个指向config-linux.h的符号链接，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">ln -s config-linux.h config.h </p>
    <li>同样，在$ACE_ROOT/include/makeinclude目录中创建一个名为platform_macros.GNU的文件，在其中包含如下一行zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">include $(ACE_ROOT)/include/makeinclude/platform_linux.GNUzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">或者，简单起见，你也可以直接建立一个指向platform_linux.GNU的符号链接，执行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">ln -s platform_linux.GNU platform_macros.GNU </p>
    <li>最后一步，设置环境变量LD_LIBRARY_PATH，执行zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">/usr/local/lib:$LD_LIBRARY_PATHzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">或者在~/.bash_profile文件中添加如下两行zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:zCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">/usr/local/lib:$LD_LIBRARY_PATHzCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">export LD_LIBRARY_PATH</p>
    </li>
</ol>
<p>&#160;</p>
<p style="TEXT-INDENT: 2em">安装完成：zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">经过上面的步骤，ACE已经安装到了您的系统上了，下面我们将编译并执行ACE的例程以验证我们的工作。zCkLinux联盟</p>
<p style="TEXT-INDENT: 2em">这里我们以《C++网络编程，卷一》所带的例子为例。zCkLinux联盟 </p>
<ol>
    <li>进入例程目录，执行zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">cd $(ACE_ROOT)/examples/C++NPv1 </p>
    <li>编译例子程序，执行zCkLinux联盟
    <p>&#160;</p>
    <p style="TEXT-INDENT: 2em">makezCkLinux联盟</p>
    <p style="TEXT-INDENT: 2em">如果前面的安装和配置正确，很快就能够得到编译后的例子程序。 </p>
    <li>分别执行一个服务器程序(随便哪一个都行)和一个客户端程序(Logging_Client)，如果程序运行正确，说明前面的安装和配置成功，下面你就可以开始你的ACE学习之旅了</li>
</ol>
<p>&nbsp;</p>
<p><strong><font color=#000000 size=4>补充</font></strong></p>
<p>&nbsp;</p>
<p>下载ace 5.6<br>在根目录下建立一个文件夹<br>mkdir /ace<br>把下载的ace包移过去，解压得到一个文件夹ACE_wrappers<br>然后进入这个文件夹，看看里面的readme就可以晓得，linux下如何编译和安装<br>网上很多人说要建立一个config.h的文件，那是好多年前的老皇历了，readme里面没有说要建立这么个玩意，那就不建立。<br>直接进入主题，编译：<br>cd&nbsp; /ace/ACE_wrappers<br>mkdir build <br>cd build<br>../configure 我们使用默认的option<br>make<br>make install<br>过程很快，然后我们进入到/usr/local目录下，可以看到include里面有ace要用的头文件，lib里面有ace要用的库文件<br>linux的库文件 的搜索路径如下：<br>/usr/include<br>/usr/local/include<br>/usr/lib/gcc-lib/i386-linux/2.95.2/include<br>/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g -3<br>/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include<br>因此，我们不用设置ace的头文件了。<br>但是ace库文件不是linux的自带的默认的库文件，因此我们使用的时候要带上，而ace现在的库文件并不是系统的，先看一下默认的：<br>&nbsp;默认的动态库搜索路径/lib和/usr/lib<br>我们把ace所在的库文件路径添加进去：<br>一：<br>在/etc/bashrc中加入：<br>export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib<br>重启<br>二：<br>打开/etc/ld.so.conf<br>本来内容是如下：<br>include ld.so.conf.d/*.conf<br>我们添加ace路径后变成如下<br>include ld.so.conf.d/*.conf<br>/usr/local/lib<br>保存退出！<br>然后执行&nbsp;&nbsp;&nbsp; ldconfig<br>就可以了。<br>下面我们弄一个简单的ace程序：<br>/////////////////////////hello.cpp<br>#include "ace/OS.h"<br>#include "ace/Log_Msg.h"<br>&nbsp;<br>int main (int argc, char *argv[])<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_DEBUG((LM_DEBUG,"Hello, ACE!\n"));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ACE_OS::exit(1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br>}</p>
<p>这么就不写makefile了，直接用g＋＋编译就是了。<br>编译<br>g++ hello.cpp -o hello -lACE<br>运行：<br>./hello<br>结果：<br>[root@BTazuo ~]# ./hello<br>Hello, ACE!</p>
<p>&nbsp;</p>
<img src ="http://www.cppblog.com/YGFaith/aggbug/70845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/YGFaith/" target="_blank">YG</a> 2008-12-31 13:37 <a href="http://www.cppblog.com/YGFaith/archive/2008/12/31/70845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>'TryEnterCriticalSection'  错误</title><link>http://www.cppblog.com/YGFaith/archive/2008/12/30/70759.html</link><dc:creator>YG</dc:creator><author>YG</author><pubDate>Tue, 30 Dec 2008 04:49:00 GMT</pubDate><guid>http://www.cppblog.com/YGFaith/archive/2008/12/30/70759.html</guid><wfw:comment>http://www.cppblog.com/YGFaith/comments/70759.html</wfw:comment><comments>http://www.cppblog.com/YGFaith/archive/2008/12/30/70759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/YGFaith/comments/commentRss/70759.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/YGFaith/services/trackbacks/70759.html</trackback:ping><description><![CDATA[<p>&nbsp; 隔了一段时间后来重新编译原本还可以编译运行的程序，在DEBUG下还是正常，但是换成release后就出现了下载问题<br>'TryEnterCriticalSection' : is not a member of '`global namespace''</p>
<p><br>解决方法：<br>处理办法:<span class=postbody twffan="done">在stdafx.h或程序开始处中增加如下宏定义，即可。 <br>用于指明WINDOWS系统版本。 <br><br>//for use TryEnterCriticalSection <br>#ifndef _WIN32_WINNT <br># define _WIN32_WINNT 0x500 <br>#endif</span></p>
<img src ="http://www.cppblog.com/YGFaith/aggbug/70759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/YGFaith/" target="_blank">YG</a> 2008-12-30 12:49 <a href="http://www.cppblog.com/YGFaith/archive/2008/12/30/70759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>