billhu422 发表于 2009-3-26 09:34:46

楼上的路径手误,打错了。

library的路径设置为:
LD_LIBRARY_PATH=$ACE_ROOT/lib:/usr/lib:/usr/local/lib

winston 发表于 2009-3-26 10:17:07

查看源代码是解决问题的途径之一。
你不能定义ACE_HAS_AIO_CALLS为0,因为这就是处理异步IO的宏定义。
代码里面,需要这个宏定义。不过我看也就这个,并无其它的定义要求。

所以,我建议,你编译一个最简单的c程序,只调用一次aio_read或者其它出错的api,看看问题在什么地方,以帮助解决问题。

billhu422 发表于 2009-3-26 13:14:07

回复 #12 winston 的帖子

我写了一个C程序,用到了aio_read,aio_error,aio_return,编译时需要增加 -lrt 才能编译成功。

我推测需要修改ACE的编译选项。于是,在platform_macros.GNU 的FLAGS_C_CC后面增加了-lrt。然而,重新make时terminal中没有打印出这个选项。错误依旧。

如果需要在编译时添加-lrt选项,在哪添加?

winston 发表于 2009-3-26 17:10:49

是不是lib文件和路径的问题,我在linux下查到:
/lib/librt.so.1 AIO需要这个库文件支持。
你添加一下路径?
解决方案应该是比较简单了。知道原因了。

我的linux版本是CentOS。

billhu422 发表于 2009-3-27 17:16:29

回复 #14 winston 的帖子

Fedora9的librt.so.1也在/lib下


我在LD_LIBRARY_PATH中添加了/lib路径,并且重新 make

错误仍旧存在。

还有哪能添加库文件路径?

winston 发表于 2009-3-27 23:41:08

几个办法试试。
1、用ACE的另外一个安装编译办法,../configure; make ;这个,不用你现在这个。
2、../configure --help有详细说明,可以加入CXXFLAG等参数指定需要的库。
3、更改MakeFile,加入-lrt指令。

应该就是这些了。

winston 发表于 2009-3-28 13:53:09

自己重新动手测试了一下,看下面的文件内容:
ACE_wrappers\include\makeinclude\platform_linux.GNU

ifeq ($(threads),1)
LIBS += -lpthread
# look for the rt library in the usual places
LIBS += $(shell test "`ls -L /usr/lib*/librt.so* /lib*/librt.so*`" && echo -lrt)
endif
说明只要下面存在这个库文件,会自己加入link的列表。

我自己是携带最新OPENSSL编译,也发生无法找到lib,解析失败的错误,最后自己更改了MakeFile.am文件,手工添加了库文件,全部通过。

billhu422 发表于 2009-3-30 09:15:01

回复 #17 winston 的帖子

这样,我修改了引用了AIO库的工程“Aio_Platform_Test”
的Makefile.am

修改前:
Aio_Platform_Test_CPPFLAGS =\
-I$(ACE_ROOT)\
-I$(ACE_BUILDDIR)\

修改后:
Aio_Platform_Test_CPPFLAGS =\
-I$(ACE_ROOT)\
-I/lib/librt.so.1\
-I$(ACE_BUILDDIR)\
-lrt

是这样改吗?
这样修改后还是报错。
请斑竹说的详细点吧,thanks~

winston 发表于 2009-3-30 11:17:15

你搞错了。那个配置是路径包含。
## Makefile.Aio_Platform_Test.am

noinst_PROGRAMS += Aio_Platform_Test

Aio_Platform_Test_CPPFLAGS = \
-I$(ACE_ROOT) \
-I$(ACE_BUILDDIR)

Aio_Platform_Test_SOURCES = \
$(ACE_ROOT)/tests/Main.cpp \
Aio_Platform_Test.cpp

Aio_Platform_Test_LDADD = \
libTest_Output.la \
$(ACE_BUILDDIR)/ace/libACE.la

最下面的才是。

billhu422 发表于 2009-3-31 09:19:18

为什么修改了Aio_Platform_Test_LDADD 后还是不行。是不是需要重新configure?

之后,我使用了另外的方法:修改build目录下的Makefile文件,在CXXFLAGS后面添加-lrt。

不过这个工作量也太大了,修改了n多个文件!好在全都编译成功了。:lol :lol :lol
感谢斑竹!

请问斑竹,有没有简便点的方法?
页: 1 [2] 3
查看完整版本: 求助:Fedora9中安装ACE5.6.8出错。