求助:Fedora9中安装ACE5.6.8出错。
1.tar zxvf ACE-5.6.8.tar.gz ~/ace2.配置config.h文件
#include"config-linux.h"
#define ACE_HAS_REACTOR_NOTIFICATION_QUEUE
3.生成platform_macros.h文件
4.设置ACE_ROOT和LD_LIBRARY_PATH
打开/etc/profile文件,添加以下内容
ACE_ROOT=/home/work/research/ace/ACE_wrappers
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:/usr/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
5.生成build的文件夹
6.执行../configure
7.执行make
执行make后出现的错误如下:
g++ -W -Wall -Wpointer-arith -g -O2 -pipe -O3 -o .libs/SAXPrint SAXPrint-Print_Handler.o SAXPrint-SAXPrint_Handler.o SAXPrint-main.o-pthread ../../../ACEXML/parser/parser/.libs/libACEXML_Parser.so /root/ace/ACE_wrappers/build/ACEXML/common/.libs/libACEXML.so ../../../ACEXML/common/.libs/libACEXML.so /root/ace/ACE_wrappers/build/ace/.libs/libACE.so ../../../ace/.libs/libACE.so -ldl -Wl,--rpath -Wl,/usr/local/lib
/root/ace/ACE_wrappers/build/ace/.libs/libACE.so: undefined reference to `aio_return'
/root/ace/ACE_wrappers/build/ace/.libs/libACE.so: undefined reference to `aio_read'
/root/ace/ACE_wrappers/build/ace/.libs/libACE.so: undefined reference to `aio_cancel'
/root/ace/ACE_wrappers/build/ace/.libs/libACE.so: undefined reference to `aio_error'
/root/ace/ACE_wrappers/build/ace/.libs/libACE.so: undefined reference to `aio_write'
/root/ace/ACE_wrappers/build/ace/.libs/libACE.so: undefined reference to `aio_suspend'
collect2: ld returned 1 exit status
make: *** 殍 1
make: Leaving directory `/root/ace/ACE_wrappers/build/ACEXML/examples/SAXPrint'
make: *** 殍 1
make: Leaving directory `/root/ace/ACE_wrappers/build/ACEXML/examples'
make: *** 殍 1
make: Leaving directory `/root/ace/ACE_wrappers/build/ACEXML'
make: *** 殍 1
# cd /usr
请问各位,怎么才能引用和aio有关的lib?还是有其他问题? 应该是没有配置安装AIO相关的模块吧? 异步IO处理。
回复 #2 winston 的帖子
在/usr/include中有aio.h文件。需要特别设置吗?
回复 #2 winston 的帖子
唯有不设置config.h并且不生成platform_macros.GNU,直接在build目录下make,ACE才能make成功。回复 #2 winston 的帖子
是不是需要把AIO相关的库复制到/usr/local/lib中?目前我的/usr/local/lib里面是空的。
回复 #2 winston 的帖子
Fedora9的内核是2.6.25在bits/posix_opt.h中有这样的描述
//We support asynchronous I/O
#define _POSIX_ASYNCHRONOUS_IO 200112L
#define _POSIX_ASYNC_IO 1
是不是说明已经配置好了AIO? 你配置一下library的路径试试看,应该是找不到库
回复 #7 winston 的帖子
我做了如下设置:LD_LIBRARY_PATH=$ACE_ROOT/aceACE_ROOT/lib:/usr/lib:/usr/local/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
还是出现同样的错误。
求救!Help~Help~
回复 #7 winston 的帖子
另外,我在config.h中设置了#define ACE_HAS_AIO_CALLS 0
之后,还是出现找不到'aio_return'等 错误. 原帖由 winston 于 2009-3-25 13:22 发表 http://www.acejoy.com/bbs/images/common/back.gif
你配置一下library的路径试试看,应该是找不到库
LD_LIBRARY_PATH设置为$ACE_ROOT/lib:/usr/lib:/usr/local
并且我更新了libaio和libaio-devel两个程序包
在/usr/lib下能够找到libaio.so.1 libaio.so.1.0.0 libaio.so.1.0.1 libaio.a libaio.so
在/usr/include/下能能够找到aio.h
但错误还是没有被消除。
help~
Thanks!