1

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のバグであり、それ以降のバージョンで修正されていることがわかりました。そこで、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 5.3 バージョンを使用することを好み、パッチを使用してバグを修正し、Linux 上でビルドできるようにします。

4

2 に答える 2

1

Ace 5.5のubuntu 14.04でも同様の問題に直面しました。

コンソール ログ全体を確認したところ、/usr/liblibrt.soが、/lib/にlibrt.so.1が見つかりませんでした。

これらを検索したところ、/usr/lib/x86_64-linux-gnu/librt.so および /lib/x86_64-linux-gnu/librt.so.1 で見つかりまし

それらを尊敬されるフォルダーにコピーしたところ、エラーなしで正常に機能しました。

i386 では、librt は/usr/lib/i386-linux-gnu/librt.soにあります。

于 2016-01-27T21:47:35.340 に答える
0

非同期ライブラリをインストールします。

たとえば、Fedora-linux ではlibaio-devel. (ほとんどの場合必要ありませんが、インストールしないと問題が発生する場合があります)

インストール後、次のフラグでコンパイルします。

cc file.c -lrt

-lrt- リンク (lrt) 読み取り時間ライブラリ。

于 2017-06-13T18:59:03.273 に答える