ACE在Linux环境下的编译安装
[Author by Jet Yan in April 4,2005] 第一步 设置ACE_ROOT环境变量 (1)export ACE_ROOT=/home/jet/ACE_wrappers export LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH (2)或者直接在用户目录下编辑.bashrc文件,内容如下: ACE_ROOT=/home/jet/ACE_wrappers export ACE_ROOT LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH export LD_LIBRARY_PATH 然后重新登陆 (3)另一种方法是修改系统的/etc/profile文件(不过这样还是以用户变量为 优先设置,即如果已经按照上面的两种方法进行了设置,那么以下的设置将不 会被系统采用。) “vi /etc/profile” 在其中加入4行 ACE_ROOT=/opt/ACE export ACE_ROOT LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH export LD_LIBRARY_PATH 我是加在“export PATH USER….”后的。完成后将/etc/profile执行一次,命令: “chmod 555 /etc/profile” “/etc/profile” 这样我们的ACE_ROOT就设置好了,可以用如下命令查看ACE_ROOT是否设置好了: “echo $ACE_ROOT” 这个时候最好reboot启动一次linux。 ------------------------------------------------------------------- 第二步 解压出ACE-install.sh文件并修改 (1)在/home/jet下建立子目录ACEInstall,将ACE.tar.gz上传至该目录 (2)从ACE.tar.gz解压出单个文件ACE-install.sh: tar –zxvf ACE.tar.gz ACE_wrappers/ACE-install.sh (3)ACE-install.sh放在哪个目录下无所谓,因为安装目录是由刚才设定的$ACE_ROOT决定的。 (4)vi ACE-install.sh 我们可以看到缺省的,这个文件是用来在UNIX下做安装的。所以我们要将其中的有 关UNIX的部分换成linux即可。 “MY_ACEDIR=${HOME}/aceconfig” -->> “MY_ACEDIR=/home/my/ACE” “MY_ACE_CONFIG=config-sunos5.4-sunc++-4.x.h” -->> “MY_ACE_CONFIG=config-linux.h” “MY_ACE_GNU_MACROS=platform_sunos5_sunc++.GNU” -->> “MY_ACE_GNU_MACROS=platform_linux.GNU” 好了,文件修改完毕,保存退出“:wq”。 ------------------------------------------------------------------- 第三步 运行ACE-install.sh(shell脚本)安装ACE (1)当前目录/home/jet/ACEInstall/ACE_wrappers (2)修改ACE-install.sh的属性,使其可执行 chmod 777 ACE-install.sh (3)执行: ./ACE-install.sh 此后将是较长时间的解包、编译等待时间。这个过程将不会出现任何错误,因为安装脚本 将为我们做很多事情,如:生成config.h,生成platform_macros.GNU。(即使出现删除 文件的错误,对结果应该没有影响,遇到这种情况要具体分析一下。) 因此就不需要按ACE-install.html中说的那样手工做如下改动: 在$ACE_ROOT/ace目录下: ln -s config-linux.h config.h 在$ACE_ROOT/include/makeinclude/目录下: ln -s platform_linux.GNU platform_macros.GNU (Windows中没有文件连接这一说,所以要自己生成一个config.h文件,再在它的里面加一 句话“#include "ace/config-win32.h"”。) (4)如果编译中出现错误,如“../apps/gperf”等,请编辑$ACE_ROOT/apps下的Makefile, 将其中的有关“gperf”的部分注释掉,这个东西只是一个例子,可以不去编译它。 强调一下,用ACE-install.sh来安装,会编译ACE、tests、apps等。 最后会生成libACE.so及tests、apps下也会出来很多经过编译的文件。 当然如果你只是下载了ACE.tar.gz这样的单个包来安装,你可以手工改文件,再make, 因为只编译ACE,工作就少了很多,手工做还可以接受。 (5)编译过程日志放在/tmp/myacemaker.err ------------------------------------------------------------------- 第四步 直接测试ACE提供的例子 (1)在$ACE_ROOT/examples/Synch中,修改proc_sema.cpp文件如下: #include "ace/OS_NS_stdio.h" 在main函数中 ACE_OS::printf("Hello,World! \n"); (2)执行make,OK后运行。 (3)如果运行时装在不到share object,可能是lib路径问题,因为.so文件是程序运行过程中 装载的,不是在编译的时候,因此要设置LD_LIBRARY_PATH: [jet@S]$ export LD_LIBRARY_PATH=/home/jet/ACE_wrappers/lib:$LD_LIBRARY_PATH ------------------------------------------------------------------- 第五步 写一个简单的程序测试一下ACE (1)在/home/jet/下新建ACETest子目录,写好程序如client.cpp,上传到该目录 (2)拷贝第四步的那个Makefile文件到该目录,并做如下修改 修改其中输出文件名“BIN = hello”,并修改“ .obj/proc_sema.o .obj/proc_sema.so .shobj/proc_sema.o .shobj/proc_sema.so: proc_sema.cpp \” 中后面的“proc_sema.cpp”成“client.cpp”。 好,我们可以编译一个我们自己的ACE程序了,make即可。应该能通过,生成执行文件client, 大小大约为112Kb。运行之,“./client”。 ------------------------------------------------------------------- ================================================= 另一种更为直接的安装方法: 步骤1:设置环境变量 export ACE_ROOT=/home/jet/ACE_wrappers export LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH 也可以直接修改.bashrc文件,以免退出后设置的这些变量消失 [env][echo $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: 在$ACE_ROOT目录下,新建一个目录,用以执行configure的结果 mkdir aaa cd aaa 在$ACE_ROOT/aaa中运行 ../configure 在确认结果无误后,执行 make OK! [rm -f -r *]删除目录下所有的文件和子目录-f是强制force删除,-r是代表目录也删除 [ldd 可执行文件] 显示该文件运行时候需要的动态链接库 [ipcs] 显示系统的共享内存、信号量、消息队列的情况 ipc show [ipcrm <shm| msg| sem> id] |
|