[openrtm-users 01076] Re: case sensitive file name in OpenRTM-aist svn

Yosuke Matsusaka yosuke.matsusaka @ aist.go.jp
2010年 1月 14日 (木) 17:01:50 JST


安藤さん

松坂です。

2010/1/14 Ando Noriaki <n-ando @ aist.go.jp>:
> これは、以下のgccのバグでしょうかね。
> http://d.hatena.ne.jp/dollyva/20080115/p1
> gccとglibcのバージョンはいくつでしょうか?
>
> いくつかのヘッダで、coil::GlobalFactory を実体化しています。
> template class ::coil::GlobalFactory<RTC::InPortConsumer>;
>
> 普通は、weakシンボルとして定義されていて、リンカがよきに計らってくれる
> ので、問題が出ないはずなのですが、いくつかのバージョンのgccでは
> 怒られるみたいです。
>
> .oファイルをnmした結果はどうなってるでしょうか?

$ nm Factory.o | grep Global
0000000000000270 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC1Ev
0000000000000f10 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC1Ev.eh
0000000000000020 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC2Ev
0000000000000b38 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC2Ev.eh
00000000000002c0 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED1Ev
0000000000000fc0 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED1Ev.eh
00000000000002a0 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED2Ev
0000000000000f88 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED2Ev.eh
$ nm FactoryInit.o | grep Global
0000000000000110 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC1Ev
00000000000005d8 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC1Ev.eh
0000000000000000 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC2Ev
00000000000003a0 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC2Ev.eh
0000000000000140 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED1Ev
0000000000000610 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED1Ev.eh
00000000000000b0 T
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED2Ev
0000000000000568 S
__ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED2Ev.eh

となっていました。安藤さんのご推察の通りTがずらずらと出てしまっていますね、、、。

gccのバージョンについては、

$ g++ -v
Using built-in specs.
Target: i686-apple-darwin10
Configured with: /var/tmp/gcc/gcc-5646.1~2/src/configure
--disable-checking --enable-werror --prefix=/usr --mandir=/share/man
--enable-languages=c,objc,c++,obj-c++
--program-transform-name=/^[cg][^.-]*$/s/$/-4.2/
--with-slibdir=/usr/lib --build=i686-apple-darwin10
--with-gxx-include-dir=/include/c++/4.2.1
--program-prefix=i686-apple-darwin10- --host=x86_64-apple-darwin10
--target=i686-apple-darwin10
Thread model: posix
gcc version 4.2.1 (Apple Inc. build 5646) (dot 1)

ということでアップル製のgccを使っていました(libcについては同じくアップル製のようでバージョンはわからず)。

今確認したところmacportsの中にGNU製のgcc(紹介いただいたURLにあるパッチが当たったものだと思います)
があったのでそちらでコンパイルを試してみます。

-- 
Yosuke Matsusaka, Ph.D  <yosuke.matsusaka @ aist.go.jp>
  Interaction Modeling Group /
  National Institute of Advanced Industrial Science and Technology (AIST)
  Tel: 029-862-6726  Web: http://staff.aist.go.jp/yosuke.matsusaka/



openrtm-users メーリングリストの案内