[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 メーリングリストの案内