在solaris和linux中构建ace时出错

在solaris和linux中构建ace时出错,linux,solaris,ace,sunstudio,Linux,Solaris,Ace,Sunstudio,我在linux中构建ace 5.3时遇到问题。我得到以下错误 g++ -W -Wall -Wpointer-arith -pipe -O3 -g -Wno-uninitialized -fno-implicit-templates -DACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION -D_POSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -D_REENTRANT -I/home/vwickram/Ubuntu_Rel

我在linux中构建ace 5.3时遇到问题。我得到以下错误

g++ -W -Wall -Wpointer-arith -pipe -O3 -g -Wno-uninitialized -fno-implicit-templates   -DACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION -D_POSIX_THREADS -D_POSIX_THREAD_SAFE_FUNCTIONS -D_REENTRANT   -I/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers -DACE_HAS_EXCEPTIONS  -L/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace -L./ -o gperf .obj/gperf.o .obj/Options.o .obj/Iterator.o .obj/Gen_Perf.o .obj/Key_List.o .obj/List_Node.o .obj/Hash_Table.o .obj/Bool_Array.o .obj/Vectors.o .obj/Version.o  -lACE -ldl -lpthread
/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace/libACE.so: undefined reference to `aio_return'
/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace/libACE.so: undefined reference to `aio_read'
/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace/libACE.so: undefined reference to `aio_cancel'
/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace/libACE.so: undefined reference to `aio_error'
/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace/libACE.so: undefined reference to `aio_write'
/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/ace/libACE.so: undefined reference to `aio_suspend'
collect2: ld returned 1 exit status
make[2]: *** [gperf] Error 1
make[2]: Leaving directory `/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/apps/gperf/src'
make[1]: *** [src.subdir] Error 2
make[1]: Leaving directory `/home/vwickram/Ubuntu_Release/tmp/ACE_wrappers/apps/gperf'
make: *** [all.nested] Error 2
当我在谷歌上搜索时,我发现这是ace5.3中的一个bug,在以后的版本中已经修复。所以我得到了ace 6.3版本,并设法在linux中构建。然而,ace 6.3不会使用sunstudio 11编译器在SolarisX86中构建。我得到以下信息

ACE::Monitor_Control::Monitor_Point_Registry*ACE_Singleton<ACE::Monitor_Control::Monitor_Point_Registry,ACE_Thread_Mutex>::instance() /home/vwickram/Ubuntu_Release/ace6.3/tmp/ACE_wrappers/lib/libACE.so
ld: fatal: Symbol referencing errors. No output written to ace_gperf
gmake[1]: *** [ace_gperf] Error 1
gmake[1]: Leaving directory `/home/vwickram/Ubuntu_Release/ace6.3/tmp/ACE_wrappers/apps/gperf/src'
gmake: *** [gperf] Error 2
ACE::Monitor\u Control::Monitor\u Point\u Registry*ACE\u Singleton::instance()/home/vwickram/Ubuntu\u Release/ace6.3/tmp/ACE\u wrappers/lib/libACE.so
ld:致命:符号引用错误。没有写入ace_gperf的输出
gmake[1]:***[ace\gperf]错误1
gmake[1]:离开目录“/home/vwickram/Ubuntu\u Release/ace6.3/tmp/ACE\u wrappers/apps/gperf/src”
gmake:**[gperf]错误2

有人能帮忙吗?我仍然更喜欢使用ace 5.3版本,并使用补丁修复该漏洞,使其构建在linux上。

我在ubuntu 14.04的ace 5.5上遇到了类似的问题

我检查了整个控制台日志,在/usr/lib和/lib中都找不到librt.so/

我在/usr/lib/x86_64-linux-gnu/librt.so和/lib/x86_64-linux-gnu/librt.so.1中搜索了它们

我将它们复制到受人尊敬的文件夹中,然后它运行良好,没有任何错误


在i386上,librt位于/usr/lib/i386 linux gnu/librt中。因此,请安装异步库

例如,在FedoraLinux中,它将是
libaio-devel
。(大多数情况下不需要,但如果未安装,可能会出现一些问题)

安装后,请使用以下标志编译

cc file.c-lrt


-lrt
-link(lrt)阅读时间库。

问这个问题的更好地方是ACE邮件列表,请参阅。不确定sunstudio编译器的问题,您在Solaris上尝试过gcc吗?Solaris上的警告将Ubuntu作为目录,这是您得到的真正错误吗?