[openrtm-users 00585] Re: FedoraCore4 で RTC のビルドエラー
Ando Noriaki
n-ando @ aist.go.jp
2008年 8月 27日 (水) 10:44:38 JST
清水様
安藤です
情報ありがとうございます。
> 静岡大の清水です。
>
> 関係ないかもしれませんが情報提供です。
>
> undefined reference to 'virtual thunk to...
> のようなエラーは、ライブラリをコンパイルしたgccと
> 実行ファイルを作成するときのgccのバージョンが
> 違うと出ることがあるようです。
>
> omniORBをコンパイルしたgccと
> RTCをコンパイルしているgccのバージョン
> を調べてみるとよいかもしれません。
問題のソース・バイナリを佐藤さんから頂いて、こちらでビルドしてみたところ、
同様のエラーが出ましたが、make clean してから再ビルドすると、
特に問題なくコンパイルが通りました。
ソースではなく、.oに問題があったようです。
清水さんのご指摘のgccのバージョンを調べるため、
.oをのぞいてみたのですが、どちらも
GCC: (GNU) 4.0.2 20051125 (Red Hat 4.0.2-8)
という文字列があったので、gccのバージョンは同じようです。
そこで、nmでclean前(リンクできない)とclean後(リンクできる)の.oの
シンボルを取り出しdiffで比較してみたのですが、
> diff -u リンクできる リンクできない
U _ZN14PortableServer11ServantBaseD0Ev
U _ZN14PortableServer11ServantBaseD1Ev
U _ZN14PortableServer11ServantBaseD2Ev
- U _ZN14PortableServer19RefCountServantBase11_remove_refEv
- U _ZN14PortableServer19RefCountServantBase8_add_refEv
-00000000 W _ZN14PortableServer19RefCountServantBaseC2Ev
- U _ZN14PortableServer19RefCountServantBaseD0Ev
- U _ZN14PortableServer19RefCountServantBaseD1Ev
- U _ZN14PortableServer19RefCountServantBaseD2Ev
のような結果となったので、やはりこのオブジェクトはomniORB-4.1系の
環境でビルドされたものであることが濃厚ですね。
ためしに、omniORB-4.1環境のubuntu8.04で.oを作ってnmをとってみたのですが、
問題の.o同様 RefCountServantBase 関係のシンボルがなく ServantBase のみ
となっていました。
佐藤様
もし、これ以外にも情報がございましたら、教えていただけませんか?
以上、よろしくお願いいたします。
--
安藤慶昭@独立行政法人産業技術総合研究所 研究員
知能システム研究部門 タスクインテリジェンス研究グループ
〒305-8568 茨城県つくば市梅園1-1-1 中央第2
TEL: 029-861-5981 FAX: 029-862-6631
n-ando @ aist.go.jp, n-ando @ ieee.org
openrtm-users メーリングリストの案内