ACE安装和配置

摘要:
ACE源代码和头文件位于$ACE_ROOT/ace目录中。4--编译ACElinux-m70n:cd$ACE_ROOT/buildlinux-m70n:make5--安装将生成的头文件、库文件以及手册页安装到指定的目录中,执行命令:linux-m70n:makeinstall6--设置动态链接库,让程序正确加载ACE的动态链接库文件linux-m70n:vi/etc/ld.so.conf在ld.so.conf文件的中,加入一面一行/usr/local/ACE/lib然后,执行命令:linux-m70n:ldconfig7--安装成功测试步骤1编写Makefile文件将如下内容保存为makefile,然后将该文件存放于目录/usr/local/ACE/ACE_wrappers/examples/C++NPv1内。
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

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

免责声明:文章转载自《ACE安装和配置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ios 多线程使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

开源项目推荐:Qt有关的GitHub/Gitee开源项目

尊重作者,支持原创,如需转载,请附上原地址:https://libaineu2004.blog.csdn.net/article/details/77369837 Q:想请教下Qt5 之后推出的qml与之前qt4的ui 开发方式,有冲突吗?我公司开发桌面程序,是两种方式兼用?还是选择其中一种?A:桌面推荐使用QWidget,触摸式的嵌入式设备推荐使用QML...

linux时间同步,ntpd、ntpdate

在Windwos中,系统时间的设置很简单,界面操作,通俗易懂。而且设置后,重启,关机都没关系。系统时间会自动保存在Bios的时钟里面,启动计算机的时候,系统会自动在Bios里面取硬件时间,以保证时间的不间断。 但在Linux下,默认情况下,系统时间和硬件时间,并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运...

linux free 命令下free/available区别

转载于https://www.jianshu.com/p/2ffeb3a3aa90 例子 [root@VM_16_17_centos bin]# free total used free shared buff/cache available Mem: 1882892...

【Linux】2 安装 Linux 操作系统(超级详细版)

CentOS 系统官网下载:http://isoredirect.centos.org/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso 点击创建新的虚拟机,选择 自定义(高级),然后点击下一步; 默认设置就好,点击"下一步"; 选择 "稍后安装操作系统",点击"下一步"; 选择"Linux", 版本选...

linux下的文件审计功能(audit inotify)

为了满足这样的需求:记录文件变化、记录用户对文件的读写,甚至记录系统调用,文件变化通知。本文介绍audit和inotify.什么是auditThe Linux Audit Subsystem is a system to Collect information regarding events occurring on the system(s)Kern...

Arch Linux 安装dwm动态窗口管理器

  dwm网站 http://suckless.org/ 一.新增dml用户以及设定密码 useradd -m -G wheel -s /bin/bash dmlpasswd dml 二.启动dhcpcd dhcpcd 三.安装Vi pacman -S vi 四.设置当前用户取得管理员sudo权限 visudo 查找/wheel命令,删除注释 #%whee...