[openrtm-users 01072] case sensitive file name in OpenRTM-aist svn

13 posts / 0 new
Last post
root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01072] case sensitive file name in OpenRTM-aist svn

松坂さん

安藤です

Slider_and_Motor も消しました(まだコミットしてないですけど)
MLは一応あります。内部開発者だけ登録していますが、
いま、松坂さんも登録しました。

openrtm-commit@m.aist.go.jp
誰でも登録できるようにしましたので、興味のある型は購読してみてください。
今は、C++、Python、Java版は全部同じMLに流れるようになっていますが、
そのうち分けたいと思っています。
なお、ツールは別MLになっています。

2010年1月14日12:38 Yosuke Matsusaka :
> 安藤さん
>
> 松坂です。
>
> svnへの下記の変更&swigのフォルダの処理、ありがとうございます。
> まだ、examples/Slider_and_Motor以下にも大文字小文字ファイルがあるようですが、
> それ以外は無事にチェックアウトできるようになりました。
>
> 私のようなコア開発者ではないけれどパッチは作れる参加者や、常に最新の
> ソースを追いかけたい参加者に対して、svnへ変更が行われる度にコミットログを
> メールで送ってくれるようなメーリングリストがあると便利に思います。
>
> メールの送信設定自体はさほど難しくない(参考URL http://www.thinkit.co.jp/cert/article/0611/2/3/2.htm)
> ようなのですが、ご検討いただけますでしょうか?
>
> いつもリクエストばかりですいません。
>
> 2010/1/14 Ando Noriaki :
>> 松坂様
>>
>> 安藤です
>>
>> ありがとうございます。
>> DEFAULT_INCLUDESにいらないインクルードパスが定義されていますね。
>> src/lib/coil/posix/coil/Makefile.am を下記のように修正しました。
>>
>>
>> -AM_CPPFLAGS=-I../ -I../../include
>> +AM_CPPFLAGS=-I.. -I$(top_srcdir)/include
>> +DEFAULT_INCLUDES=
>>
>>
>>
>> 2010年1月13日18:49 Yosuke Matsusaka :
>>> 松坂です。
>>>
>>> 度々すいません。
>>>
>>> 下記の現象、コンパイル時にオプション"-I. -I../../include/coil"が入っているとエラーになるようです。
>>>
>>> src/lib/coil/posix/coil/Makefile.am
>>> のなかの
>>> AM_CPPFLAGS=-I../ -I../../include
>>> の下に
>>> DEFAULT_INCLUDES=
>>> の一行を入れたところ無事にコンパイルできるようになりました。
>>>
>>> 上記変更が他のプラットフォームでも問題にならないようでしたら取り込んでいただけますでしょうか?
>>>
>>> よろしくお願いします。
>>>
>>> 2010/1/13 Yosuke Matsusaka :
>>>> 安藤さん
>>>>
>>>> 松坂です。
>>>>
>>>> お返事遅くなりましたが、下記の件、よろしくお願いします。
>>>>
>>>> Mac OS X上での1.0.0-RC1のコンパイルを試しているのですが、下記と同じ問題で
>>>> include/coilの中にあるTime.hが悪さをするようです(標準のヘッダファイルctimeの中で
>>>> includeと書かれているのですが、大文字小文字の区別がないために、coilの
>>>> Time.hが読み込まれてしまいエラーになります)。
>>>>
>>>> おそらくWindowsでも同様の問題が起こると思いますので、上記あわせて対応いただけ
>>>> ればと思います。
>>>>
>>>> 他に見つけましたらまた報告します。
>>>>
>>>> 2010/1/7 Ando Noriaki :
>>>>> 松坂様
>>>>>
>>>>> 安藤です
>>>>>
>>>>> はい、その通りです。
>>>>> Windowsなどでチェックアウトすると文句を言われてしまいます。
>>>>> swigの下のファイルや、exampleの下のPythonのサンプルなどが
>>>>> 該当すると思います。変更いたします。
>>>>>
>>>>> 2010年1月7日13:13 Yosuke Matsusaka :
>>>>>> OpenRTM-aist開発者の皆様
>>>>>>
>>>>>> 産総研の松坂です。
>>>>>>
>>>>>> 先日安藤さんからアナウンスのあったOpenRTMのsvnからソースをチェックアウト
>>>>>> して試そうとしているのですが、Mac OS X上でチェックアウトすると
>>>>>>
>>>>>> svn: Can't open file
>>>>>> 'swig/python/.svn/tmp/text-base/RtcBase.i.svn-base': No such file or
>>>>>> directory
>>>>>>
>>>>>> というエラーが出てしまいます。
>>>>>>
>>>>>> いろいろ調べてみると、Mac OS XやWindowsのファイルシステムでsubversionを
>>>>>> 使う場合、ファイル名に関して以下のような制限があり、上記エラーもこれが原因と
>>>>>> なっているようです。
>>>>>> http://svn.haxx.se/users/archive-2009-02/0084.shtml
>>>>>>
>>>>>> 以下の場所にある
>>>>>> http://openrtp.jp/openrtm/svn/OpenRTM-aist/trunk/OpenRTM-aist/swig/python/
>>>>>> 大文字小文字が違うだけの同名ファイル
>>>>>> RTCBase.i
>>>>>> RtcBase.i
>>>>>> のいずれかをもし不都合がなければ改名していただけるとありがたいのですが
>>>>>> 検討いただけますでしょうか?
>>>>>>

Undefined
root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01074] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

下記の件、ありがとうございます。

Mac OS Xでのコンパイルを可能にするためのパッチを送っておきます。
最新のtrunkからのdiffなので、問題ないようであればマージしてくださいませ。

上記パッチで大部分コンパイル可能になったものの、下記のエラーが解消出来ていません。
FactoryInit.cppを見るとほとんど処理が書かれていないのでどこかのヘッダに書いてある宣言が原因だと思うのですが、
C++のテンプレートを追いかけるのが難儀でまだ解決できないでいます。
もしわかりましたら教えてください。

ld: duplicate symbol coil::GlobalFactory, std::allocator
>, std::less,
std::allocator > >, RTC::InPortConsumer* (*)(), void
(*)(RTC::InPortConsumer*&)>::GlobalFactory()in .libs/Factory.o and
.libs/FactoryInit.o

2010/1/14 Ando Noriaki :
> 松坂さん
>
> 安藤です
>
> Slider_and_Motor も消しました(まだコミットしてないですけど)
> MLは一応あります。内部開発者だけ登録していますが、
> いま、松坂さんも登録しました。
>
> openrtm-commit@m.aist.go.jp
> 誰でも登録できるようにしましたので、興味のある型は購読してみてください。
> 今は、C++、Python、Java版は全部同じMLに流れるようになっていますが、
> そのうち分けたいと思っています。
> なお、ツールは別MLになっています。
>
> 2010年1月14日12:38 Yosuke Matsusaka :
>> 安藤さん
>>
>> 松坂です。
>>
>> svnへの下記の変更&swigのフォルダの処理、ありがとうございます。
>> まだ、examples/Slider_and_Motor以下にも大文字小文字ファイルがあるようですが、
>> それ以外は無事にチェックアウトできるようになりました。
>>
>> 私のようなコア開発者ではないけれどパッチは作れる参加者や、常に最新の
>> ソースを追いかけたい参加者に対して、svnへ変更が行われる度にコミットログを
>> メールで送ってくれるようなメーリングリストがあると便利に思います。
>>
>> メールの送信設定自体はさほど難しくない(参考URL http://www.thinkit.co.jp/cert/article/0611/2/3/2.htm)
>> ようなのですが、ご検討いただけますでしょうか?
>>
>> いつもリクエストばかりですいません。
>>
>> 2010/1/14 Ando Noriaki :
>>> 松坂様
>>>
>>> 安藤です
>>>
>>> ありがとうございます。
>>> DEFAULT_INCLUDESにいらないインクルードパスが定義されていますね。
>>> src/lib/coil/posix/coil/Makefile.am を下記のように修正しました。
>>>
>>>
>>> -AM_CPPFLAGS=-I../ -I../../include
>>> +AM_CPPFLAGS=-I.. -I$(top_srcdir)/include
>>> +DEFAULT_INCLUDES=
>>>
>>>
>>>
>>> 2010年1月13日18:49 Yosuke Matsusaka :
>>>> 松坂です。
>>>>
>>>> 度々すいません。
>>>>
>>>> 下記の現象、コンパイル時にオプション"-I. -I../../include/coil"が入っているとエラーになるようです。
>>>>
>>>> src/lib/coil/posix/coil/Makefile.am
>>>> のなかの
>>>> AM_CPPFLAGS=-I../ -I../../include
>>>> の下に
>>>> DEFAULT_INCLUDES=
>>>> の一行を入れたところ無事にコンパイルできるようになりました。
>>>>
>>>> 上記変更が他のプラットフォームでも問題にならないようでしたら取り込んでいただけますでしょうか?
>>>>
>>>> よろしくお願いします。
>>>>
>>>> 2010/1/13 Yosuke Matsusaka :
>>>>> 安藤さん
>>>>>
>>>>> 松坂です。
>>>>>
>>>>> お返事遅くなりましたが、下記の件、よろしくお願いします。
>>>>>
>>>>> Mac OS X上での1.0.0-RC1のコンパイルを試しているのですが、下記と同じ問題で
>>>>> include/coilの中にあるTime.hが悪さをするようです(標準のヘッダファイルctimeの中で
>>>>> includeと書かれているのですが、大文字小文字の区別がないために、coilの
>>>>> Time.hが読み込まれてしまいエラーになります)。
>>>>>
>>>>> おそらくWindowsでも同様の問題が起こると思いますので、上記あわせて対応いただけ
>>>>> ればと思います。
>>>>>
>>>>> 他に見つけましたらまた報告します。
>>>>>
>>>>> 2010/1/7 Ando Noriaki :
>>>>>> 松坂様
>>>>>>
>>>>>> 安藤です
>>>>>>
>>>>>> はい、その通りです。
>>>>>> Windowsなどでチェックアウトすると文句を言われてしまいます。
>>>>>> swigの下のファイルや、exampleの下のPythonのサンプルなどが
>>>>>> 該当すると思います。変更いたします。
>>>>>>
>>>>>> 2010年1月7日13:13 Yosuke Matsusaka :
>>>>>>> OpenRTM-aist開発者の皆様
>>>>>>>
>>>>>>> 産総研の松坂です。
>>>>>>>
>>>>>>> 先日安藤さんからアナウンスのあったOpenRTMのsvnからソースをチェックアウト
>>>>>>> して試そうとしているのですが、Mac OS X上でチェックアウトすると
>>>>>>>
>>>>>>> svn: Can't open file
>>>>>>> 'swig/python/.svn/tmp/text-base/RtcBase.i.svn-base': No such file or
>>>>>>> directory
>>>>>>>
>>>>>>> というエラーが出てしまいます。
>>>>>>>
>>>>>>> いろいろ調べてみると、Mac OS XやWindowsのファイルシステムでsubversionを
>>>>>>> 使う場合、ファイル名に関して以下のような制限があり、上記エラーもこれが原因と
>>>>>>> なっているようです。
>>>>>>> http://svn.haxx.se/users/archive-2009-02/0084.shtml
>>>>>>>
>>>>>>> 以下の場所にある
>>>>>>> http://openrtp.jp/openrtm/svn/OpenRTM-aist/trunk/OpenRTM-aist/swig/python/
>>>>>>> 大文字小文字が違うだけの同名ファイル
>>>>>>> RTCBase.i
>>>>>>> RtcBase.i
>>>>>>> のいずれかをもし不都合がなければ改名していただけるとありがたいのですが
>>>>>>> 検討いただけますでしょうか?
>>>>>>>

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01075] case sensitive file name in OpenRTM-aist

松坂様

安藤です

ありがとうございます。
パッチ使わせていただきます。

> 安藤さん
>
> 松坂です。
>
> 下記の件、ありがとうございます。
>
> Mac OS Xでのコンパイルを可能にするためのパッチを送っておきます。
> 最新のtrunkからのdiffなので、問題ないようであればマージしてくださいませ。
>
> 上記パッチで大部分コンパイル可能になったものの、下記のエラーが解消出来ていません。
> FactoryInit.cppを見るとほとんど処理が書かれていないのでどこかのヘッダに書いてある宣言が原因だと思うのですが、
> C++のテンプレートを追いかけるのが難儀でまだ解決できないでいます。
> もしわかりましたら教えてください。
>
> ld: duplicate symbol coil::GlobalFactory std::basic_string, std::allocator
>>, std::less,
> std::allocator > >, RTC::InPortConsumer* (*)(), void
> (*)(RTC::InPortConsumer*&)>::GlobalFactory()in .libs/Factory.o and
> .libs/FactoryInit.o

これは、以下のgccのバグでしょうかね。
http://d.hatena.ne.jp/dollyva/20080115/p1
gccとglibcのバージョンはいくつでしょうか?

いくつかのヘッダで、coil::GlobalFactory を実体化しています。
template class ::coil::GlobalFactory;

普通は、weakシンボルとして定義されていて、リンカがよきに計らってくれる
ので、問題が出ないはずなのですが、いくつかのバージョンのgccでは
怒られるみたいです。

.oファイルをnmした結果はどうなってるでしょうか?

>nm InPortBase.o | grep Global
00000000 V _ZGVN4coil9SingletonINS_13GlobalFactoryIN3RTC10BufferBaseI15cdrMemoryStreamEESsSt4lessISsEPFPS5_vEPFvRS8_EEEE7m_mutexE
00000000 V _ZGVN4coil9SingletonINS_13GlobalFactoryIN3RTC14InPortProviderESsSt4lessISsEPFPS3_vEPFvRS6_EEEE7m_mutexE
00000000 V _ZGVN4coil9SingletonINS_13GlobalFactoryIN3RTC15OutPortConsumerESsSt4lessISsEPFPS3_vEPFvRS6_EEEE7m_mutexE
00000000 W _ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC1Ev
00000000 W _ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EEC2Ev
00000000 W _ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED1Ev
00000000 W _ZN4coil13GlobalFactoryIN3RTC14InPortConsumerESsSt4lessISsEPFPS2_vEPFvRS5_EED2Ev
00000000 V _ZN4coil9SingletonINS_13GlobalFactoryIN3RTC10BufferBaseI15cdrMemoryStreamEESsSt4lessISsEPFPS5_vEPFvRS8_EEEE10m_instanceE
00000000 V _ZN4coil9SingletonINS_13GlobalFactoryIN3RTC10BufferBaseI15cdrMemoryStreamEESsSt4lessISsEPFPS5_vEPFvRS8_EEEE7m_mutexE
00000000 V _ZN4coil9SingletonINS_13GlobalFactoryIN3RTC14InPortProviderESsSt4lessISsEPFPS3_vEPFvRS6_EEEE10m_instanceE
00000000 V _ZN4coil9SingletonINS_13GlobalFactoryIN3RTC14InPortProviderESsSt4lessISsEPFPS3_vEPFvRS6_EEEE7m_mutexE
00000000 V _ZN4coil9SingletonINS_13GlobalFactoryIN3RTC15OutPortConsumerESsSt4lessISsEPFPS3_vEPFvRS6_EEEE10m_instanceE
00000000 V _ZN4coil9SingletonINS_13GlobalFactoryIN3RTC15OutPortConsumerESsSt4lessISsEPFPS3_vEPFvRS6_EEEE7m_mutexE

GlobalFactory は普通weakシンボルになるので、以下のように
リンク時はエラーにならないはずなのですが。。。。

"V" シンボルは弱いオブジェクトです。弱く定義されたシンボルが通常定
義されたシンボルとリンクされるとき、エラー無しで通常定義され た
シ ンボルが使用されます。弱い未定義なシンボルがリンクされそのシ
ンボルが未定義なとき、弱いシンボルの値はエラー無しに 0 になりま
す。

"W" シンボルは弱いオブジェクトですが、弱いオブジェクトであるとは特
に指定されていませんでした。弱く定義されたシンボルが通常定義 さ
れ たシンボルとリンクされるとき、エラー無しで通常定義されたシン
ボルが使用されます。弱い未定義なシンボルがリンクされそのシン ボ
ルが未定義なとき、弱いシンボルの値はエラー無しに 0 になります。

同じTのシンボルが2つ以上のオブジェクトにある場合はリンカに怒られますけど。。。。

>
>
> 2010/1/14 Ando Noriaki :
>> 松坂さん
>>
>> 安藤です
>>
>> Slider_and_Motor も消しました(まだコミットしてないですけど)
>> MLは一応あります。内部開発者だけ登録していますが、
>> いま、松坂さんも登録しました。
>>
>> openrtm-commit@m.aist.go.jp
>> 誰でも登録できるようにしましたので、興味のある型は購読してみてください。
>> 今は、C++、Python、Java版は全部同じMLに流れるようになっていますが、
>> そのうち分けたいと思っています。
>> なお、ツールは別MLになっています。
>>
>> 2010年1月14日12:38 Yosuke Matsusaka :
>>> 安藤さん
>>>
>>> 松坂です。
>>>
>>> svnへの下記の変更&swigのフォルダの処理、ありがとうございます。
>>> まだ、examples/Slider_and_Motor以下にも大文字小文字ファイルがあるようですが、
>>> それ以外は無事にチェックアウトできるようになりました。
>>>
>>> 私のようなコア開発者ではないけれどパッチは作れる参加者や、常に最新の
>>> ソースを追いかけたい参加者に対して、svnへ変更が行われる度にコミットログを
>>> メールで送ってくれるようなメーリングリストがあると便利に思います。
>>>
>>> メールの送信設定自体はさほど難しくない(参考URL http://www.thinkit.co.jp/cert/article/0611/2/3/2.htm)
>>> ようなのですが、ご検討いただけますでしょうか?
>>>
>>> いつもリクエストばかりですいません。
>>>
>>> 2010/1/14 Ando Noriaki :
>>>> 松坂様
>>>>
>>>> 安藤です
>>>>
>>>> ありがとうございます。
>>>> DEFAULT_INCLUDESにいらないインクルードパスが定義されていますね。
>>>> src/lib/coil/posix/coil/Makefile.am を下記のように修正しました。
>>>>
>>>>
>>>> -AM_CPPFLAGS=-I../ -I../../include
>>>> +AM_CPPFLAGS=-I.. -I$(top_srcdir)/include
>>>> +DEFAULT_INCLUDES=
>>>>
>>>>
>>>>
>>>> 2010年1月13日18:49 Yosuke Matsusaka :
>>>>> 松坂です。
>>>>>
>>>>> 度々すいません。
>>>>>
>>>>> 下記の現象、コンパイル時にオプション"-I. -I../../include/coil"が入っているとエラーになるようです。
>>>>>
>>>>> src/lib/coil/posix/coil/Makefile.am
>>>>> のなかの
>>>>> AM_CPPFLAGS=-I../ -I../../include
>>>>> の下に
>>>>> DEFAULT_INCLUDES=
>>>>> の一行を入れたところ無事にコンパイルできるようになりました。
>>>>>
>>>>> 上記変更が他のプラットフォームでも問題にならないようでしたら取り込んでいただけますでしょうか?
>>>>>
>>>>> よろしくお願いします。
>>>>>
>>>>> 2010/1/13 Yosuke Matsusaka :
>>>>>> 安藤さん
>>>>>>
>>>>>> 松坂です。
>>>>>>
>>>>>> お返事遅くなりましたが、下記の件、よろしくお願いします。
>>>>>>
>>>>>> Mac OS X上での1.0.0-RC1のコンパイルを試しているのですが、下記と同じ問題で
>>>>>> include/coilの中にあるTime.hが悪さをするようです(標準のヘッダファイルctimeの中で
>>>>>> includeと書かれているのですが、大文字小文字の区別がないために、coilの
>>>>>> Time.hが読み込まれてしまいエラーになります)。
>>>>>>
>>>>>> おそらくWindowsでも同様の問題が起こると思いますので、上記あわせて対応いただけ
>>>>>> ればと思います。
>>>>>>
>>>>>> 他に見つけましたらまた報告します。
>>>>>>
>>>>>> 2010/1/7 Ando Noriaki :
>>>>>>> 松坂様
>>>>>>>
>>>>>>> 安藤です
>>>>>>>
>>>>>>> はい、その通りです。
>>>>>>> Windowsなどでチェックアウトすると文句を言われてしまいます。
>>>>>>> swigの下のファイルや、exampleの下のPythonのサンプルなどが
>>>>>>> 該当すると思います。変更いたします。
>>>>>>>
>>>>>>> 2010年1月7日13:13 Yosuke Matsusaka :
>>>>>>>> OpenRTM-aist開発者の皆様
>>>>>>>>
>>>>>>>> 産総研の松坂です。
>>>>>>>>
>>>>>>>> 先日安藤さんからアナウンスのあったOpenRTMのsvnからソースをチェックアウト
>>>>>>>> して試そうとしているのですが、Mac OS X上でチェックアウトすると
>>>>>>>>
>>>>>>>> svn: Can't open file
>>>>>>>> 'swig/python/.svn/tmp/text-base/RtcBase.i.svn-base': No such file or
>>>>>>>> directory
>>>>>>>>
>>>>>>>> というエラーが出てしまいます。
>>>>>>>>
>>>>>>>> いろいろ調べてみると、Mac OS XやWindowsのファイルシステムでsubversionを
>>>>>>>> 使う場合、ファイル名に関して以下のような制限があり、上記エラーもこれが原因と
>>>>>>>> なっているようです。
>>>>>>>> http://svn.haxx.se/users/archive-2009-02/0084.shtml
>>>>>>>>
>>>>>>>> 以下の場所にある
>>>>>>>> http://openrtp.jp/openrtm/svn/OpenRTM-aist/trunk/OpenRTM-aist/swig/python/
>>>>>>>> 大文字小文字が違うだけの同名ファイル
>>>>>>>> RTCBase.i
>>>>>>>> RtcBase.i
>>>>>>>> のいずれかをもし不都合がなければ改名していただけるとありがたいのですが
>>>>>>>> 検討いただけますでしょうか?

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01076] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

2010/1/14 Ando Noriaki :
> これは、以下のgccのバグでしょうかね。
> http://d.hatena.ne.jp/dollyva/20080115/p1
> gccとglibcのバージョンはいくつでしょうか?
>
> いくつかのヘッダで、coil::GlobalFactory を実体化しています。
> template class ::coil::GlobalFactory;
>
> 普通は、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にあるパッチが当たったものだと思います)
があったのでそちらでコンパイルを試してみます。

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01078] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

下記の件、対処法はまだわかっていないのですが、原因はわかりました。
以下の説明によると
http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
g++のtemplateの自動的な実体化&配置は、ELFシステム or Windowsでのみ有効
という制限があるようです。
一番簡単な対処法は"-frepo"フラグを付けることのようですが、ライブラリの場合で
今回のように衝突が起こっている場合は手動で解決する必要があるようです。
-fno-implicit-templatesを使う方法も試してみたのですが、今度はexplicitに生成しなけ
ればならないオブジェクトが大量に出てしまいました。

マイナーなプラットフォームを使っているとこういう時に対処に困ります。
どうしたものやら、、、。

2010/1/14 Yosuke Matsusaka :
> 安藤さん
>
> 松坂です。
>
> 2010/1/14 Ando Noriaki :
>> これは、以下のgccのバグでしょうかね。
>> http://d.hatena.ne.jp/dollyva/20080115/p1
>> gccとglibcのバージョンはいくつでしょうか?
>>
>> いくつかのヘッダで、coil::GlobalFactory を実体化しています。
>> template class ::coil::GlobalFactory;
>>
>> 普通は、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
> Interaction Modeling Group /
> National Institute of Advanced Industrial Science and Technology (AIST)
> Tel: 029-862-6726 Web: http://staff.aist.go.jp/yosuke.matsusaka/
>

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01079] case sensitive file name in OpenRTM-aist

松坂さん

安藤です

ちなみに、duplicate symbolで怒られるのはInPortConsumerのみですか?
でしたら、試しに、InPortConsumer.h の最後の

template class ::coil::GlobalFactory;

を削ってみてもらえないでしょうか?

もしこれで、リンク時に、undefined reference が出るようでしたら、

template class ::coil::GlobalFactory CdrBufferFactory;
template class ::coil::GlobalFactory InPortConsumerFactory;
template class ::coil::GlobalFactory InPortProviderFactory;
template class ::coil::GlobalFactory OutPortConsumerFactory;
template class ::coil::GlobalFactory OutPortProviderFactory;
template class ::coil::GlobalFactory
PeriodicTaskFactory;
template class ::coil::GlobalFactory PublisherFactory;

を FactoryInit.cpp の適当場場所においてみてください。

2010年1月18日14:40 Yosuke Matsusaka :
> 安藤さん
>
> 松坂です。
>
> 下記の件、対処法はまだわかっていないのですが、原因はわかりました。
> 以下の説明によると
> http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
> g++のtemplateの自動的な実体化&配置は、ELFシステム or Windowsでのみ有効
> という制限があるようです。
> 一番簡単な対処法は"-frepo"フラグを付けることのようですが、ライブラリの場合で
> 今回のように衝突が起こっている場合は手動で解決する必要があるようです。
> -fno-implicit-templatesを使う方法も試してみたのですが、今度はexplicitに生成しなけ
> ればならないオブジェクトが大量に出てしまいました。
>
> マイナーなプラットフォームを使っているとこういう時に対処に困ります。
> どうしたものやら、、、。
>
> 2010/1/14 Yosuke Matsusaka :
>> 安藤さん
>>
>> 松坂です。
>>
>> 2010/1/14 Ando Noriaki :
>>> これは、以下のgccのバグでしょうかね。
>>> http://d.hatena.ne.jp/dollyva/20080115/p1
>>> gccとglibcのバージョンはいくつでしょうか?
>>>
>>> いくつかのヘッダで、coil::GlobalFactory を実体化しています。
>>> template class ::coil::GlobalFactory;
>>>
>>> 普通は、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にあるパッチが当たったものだと思います)
>> があったのでそちらでコンパイルを試してみます。

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01080] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

下記の対処で無事にコンパイルできるようになりました。ありがとうございました。
細かい動作確認はこれからですが、現時点のパッチを送っておきます。
#余分なコードがついてしまうので、trunkにマージするかどうかの判断はお任せします。

2010/1/18 Ando Noriaki :
> 松坂さん
>
> 安藤です
>
> ちなみに、duplicate symbolで怒られるのはInPortConsumerのみですか?
> でしたら、試しに、InPortConsumer.h の最後の
>
> template class ::coil::GlobalFactory;
>
> を削ってみてもらえないでしょうか?
>
> もしこれで、リンク時に、undefined reference が出るようでしたら、
>
> template class ::coil::GlobalFactory CdrBufferFactory;
> template class ::coil::GlobalFactory InPortConsumerFactory;
> template class ::coil::GlobalFactory InPortProviderFactory;
> template class ::coil::GlobalFactory OutPortConsumerFactory;
> template class ::coil::GlobalFactory OutPortProviderFactory;
> template class ::coil::GlobalFactory
> PeriodicTaskFactory;
> template class ::coil::GlobalFactory PublisherFactory;
>
> を FactoryInit.cpp の適当場場所においてみてください。
>
>
>
> 2010年1月18日14:40 Yosuke Matsusaka :
>> 安藤さん
>>
>> 松坂です。
>>
>> 下記の件、対処法はまだわかっていないのですが、原因はわかりました。
>> 以下の説明によると
>> http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
>> g++のtemplateの自動的な実体化&配置は、ELFシステム or Windowsでのみ有効
>> という制限があるようです。
>> 一番簡単な対処法は"-frepo"フラグを付けることのようですが、ライブラリの場合で
>> 今回のように衝突が起こっている場合は手動で解決する必要があるようです。
>> -fno-implicit-templatesを使う方法も試してみたのですが、今度はexplicitに生成しなけ
>> ればならないオブジェクトが大量に出てしまいました。
>>
>> マイナーなプラットフォームを使っているとこういう時に対処に困ります。
>> どうしたものやら、、、。
>>
>> 2010/1/14 Yosuke Matsusaka :
>>> 安藤さん
>>>
>>> 松坂です。
>>>
>>> 2010/1/14 Ando Noriaki :
>>>> これは、以下のgccのバグでしょうかね。
>>>> http://d.hatena.ne.jp/dollyva/20080115/p1
>>>> gccとglibcのバージョンはいくつでしょうか?
>>>>
>>>> いくつかのヘッダで、coil::GlobalFactory を実体化しています。
>>>> template class ::coil::GlobalFactory;
>>>>
>>>> 普通は、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にあるパッチが当たったものだと思います)
>>> があったのでそちらでコンパイルを試してみます。
>>>

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01081] case sensitive file name in OpenRTM-aist

松坂様

安藤です

パッチ、ありがとうございます。
template class の実体化宣言ですが、これはないと
コンパイルは通りませんでした?
LinuxやWindowsでは、無くても問題ないのですが。

あと、Mac OS Xはipコマンドではなく、routeコマンドということですね。
#当然と言えば当然ですが。。。

2010年1月18日18:19 Yosuke Matsusaka :
> 安藤さん
>
> 松坂です。
>
> 下記の対処で無事にコンパイルできるようになりました。ありがとうございました。
> 細かい動作確認はこれからですが、現時点のパッチを送っておきます。
> #余分なコードがついてしまうので、trunkにマージするかどうかの判断はお任せします。
>
> 2010/1/18 Ando Noriaki :
>> 松坂さん
>>
>> 安藤です
>>
>> ちなみに、duplicate symbolで怒られるのはInPortConsumerのみですか?
>> でしたら、試しに、InPortConsumer.h の最後の
>>
>> template class ::coil::GlobalFactory;
>>
>> を削ってみてもらえないでしょうか?
>>
>> もしこれで、リンク時に、undefined reference が出るようでしたら、
>>
>> template class ::coil::GlobalFactory CdrBufferFactory;
>> template class ::coil::GlobalFactory InPortConsumerFactory;
>> template class ::coil::GlobalFactory InPortProviderFactory;
>> template class ::coil::GlobalFactory OutPortConsumerFactory;
>> template class ::coil::GlobalFactory OutPortProviderFactory;
>> template class ::coil::GlobalFactory
>> PeriodicTaskFactory;
>> template class ::coil::GlobalFactory PublisherFactory;
>>
>> を FactoryInit.cpp の適当場場所においてみてください。
>>
>>
>>
>> 2010年1月18日14:40 Yosuke Matsusaka :
>>> 安藤さん
>>>
>>> 松坂です。
>>>
>>> 下記の件、対処法はまだわかっていないのですが、原因はわかりました。
>>> 以下の説明によると
>>> http://gcc.gnu.org/onlinedocs/gcc/Template-Instantiation.html
>>> g++のtemplateの自動的な実体化&配置は、ELFシステム or Windowsでのみ有効
>>> という制限があるようです。
>>> 一番簡単な対処法は"-frepo"フラグを付けることのようですが、ライブラリの場合で
>>> 今回のように衝突が起こっている場合は手動で解決する必要があるようです。
>>> -fno-implicit-templatesを使う方法も試してみたのですが、今度はexplicitに生成しなけ
>>> ればならないオブジェクトが大量に出てしまいました。
>>>
>>> マイナーなプラットフォームを使っているとこういう時に対処に困ります。
>>> どうしたものやら、、、。
>>>
>>> 2010/1/14 Yosuke Matsusaka :
>>>> 安藤さん
>>>>
>>>> 松坂です。
>>>>
>>>> 2010/1/14 Ando Noriaki :
>>>>> これは、以下のgccのバグでしょうかね。
>>>>> http://d.hatena.ne.jp/dollyva/20080115/p1
>>>>> gccとglibcのバージョンはいくつでしょうか?
>>>>>
>>>>> いくつかのヘッダで、coil::GlobalFactory を実体化しています。
>>>>> template class ::coil::GlobalFactory;
>>>>>
>>>>> 普通は、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にあるパッチが当たったものだと思います)
>>>> があったのでそちらでコンパイルを試してみます。
>>>>

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01082] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

2010/1/19 Ando Noriaki :
> template class の実体化宣言ですが、これはないと
> コンパイルは通りませんでした?
> LinuxやWindowsでは、無くても問題ないのですが。

昨日は帰宅間際の頭がふらふらした状態でパッチを送ってしまいすいませんでした。
先ほど確認したところ、InPortConsumer.hの最後の
template class ::coil::GlobalFactory;
を消すだけでOKでした(FactoryInit.cppへの実体化宣言の追加は不要)。
ソースを汚さず、きれいに対応出来そうです。

> あと、Mac OS Xはipコマンドではなく、routeコマンドということですね。
> #当然と言えば当然ですが。。。

はい。動作させて確認したところそのようでした。
#BSDの血脈を感じさせますね:)

サンプルプログラムをいくつか動かしてみましたが、一応、無事に動作しているようです。

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01142] case sensitive file name in OpenRTM-aist

松坂様、OpenRTM MLの皆さま

産総研 安藤です

最近、MacBookProを手に入れたので、
OpenRTM-aistのMacPortsを作ってみました。

使い方はこんな感じです。
#ホームdir /Users/n-ando の下で作業すると仮定

> cd
> tar vxzf ports.tgz_
> cd ports
> portindex
> sudo bash
# vi /opt/local/etc/macports/sources.conf

ファイル内に
file:///Users/n-ando/ports/
の1行を追加

# port search OpenRTM-aist
OpenRTM-aist @1.0.0 (devel)
OpenRTM-aist: RT-Middleware distributed by AIST
# port install OpenRTM-aist

/opt/local/bin にコマンド類
/opt/local/share/OpenRTM-aist 以下にサンプルやドキュメント
/opt/local/lib にライブラリ

などがインストールされます。

松坂さんに修正点を教えていただいていたのですが、1.0.0 では
微妙に直っていなかったのでそれを修正するパッチが含まれています。すみません。

また、macports でビルドすると自動で make に -j2 オプションが付くため
依存関係の記述が甘かった examples/SimpleService でエラーになりました。
そこで、examples/SimpleService/Makefile.in にもパッチをあてています。

できれば、この ports を www.openrtm.org で提供したいのですが、
どなたかやり方をご存じないでしょうか?

また、インストールの度に毎度コンパイルするのも大変なので
バイナリパッケージもOpenRTMのサイトから提供できるといいのですが、
macports でこれが可能かどうか、どなたかご存じありませんか?

以上、よろしくお願いします。

> 安藤さん
>
> 松坂です。
>
> 2010/1/19 Ando Noriaki :
>> template class の実体化宣言ですが、これはないと
>> コンパイルは通りませんでした?
>> LinuxやWindowsでは、無くても問題ないのですが。
>
> 昨日は帰宅間際の頭がふらふらした状態でパッチを送ってしまいすいませんでした。
> 先ほど確認したところ、InPortConsumer.hの最後の
> template class ::coil::GlobalFactory;
> を消すだけでOKでした(FactoryInit.cppへの実体化宣言の追加は不要)。
> ソースを汚さず、きれいに対応出来そうです。
>
>> あと、Mac OS Xはipコマンドではなく、routeコマンドということですね。
>> #当然と言えば当然ですが。。。
>
> はい。動作させて確認したところそのようでした。
> #BSDの血脈を感じさせますね:)
>
> サンプルプログラムをいくつか動かしてみましたが、一応、無事に動作しているようです。

確かにそうですね。といっても、まだなんだか落ち着かない感じです>Mac OS X
今のところ、MacのホームをWindowsからマウントしてMeadowで編集、
ASTECXでMacのxtermを表示させて作業してます(笑

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01143] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

2010/2/24 Ando Noriaki :
> 最近、MacBookProを手に入れたので、
> OpenRTM-aistのMacPortsを作ってみました。

おー、それは素晴らしいです。
OSX版もいよいよ公式化ですかね :)

> できれば、この ports を www.openrtm.org で提供したいのですが、
> どなたかやり方をご存じないでしょうか?

私は、SVNでportsリポジトリを登録する方法をとっていました。
以下のURLがその例です。
http://openrtp.jp/repos/stuff/macports/trunk

詳しくは以下に書いてあります。
http://staff.aist.go.jp/yosuke.matsusaka/openrtm

port syncコマンドでsvn updateも自動でやってくれるようなのでこれで良いかなと
思っていたのですが、公式portsなどはどのようになっているのでしょうね。
macportsのパッケージの審査はdebianほど厳格ではないようなので、いっそのこと
公式の方ににportsファイルをサブミットしてしまうのも手かもしれません。

C++1.0.0版のportsの作成はまだでしたが、上記リポジトリの中にpython版のパッケー
ジなども入っています。問題なさそうであれば取り込んでくださいませ。

> また、インストールの度に毎度コンパイルするのも大変なので
> バイナリパッケージもOpenRTMのサイトから提供できるといいのですが、
> macports でこれが可能かどうか、どなたかご存じありませんか?

OSXの場合、ソースベースのパッケージがmacports。
バイナリベースのパッケージはfinkを使うというのが私の理解です。
#違うかもしれませんが

> 今のところ、MacのホームをWindowsからマウントしてMeadowで編集、
> ASTECXでMacのxtermを表示させて作業してます(笑

私もms-officeが動くUNIXとしてしか使っていないので大差ないかも:)

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01144] case sensitive file name in OpenRTM-aist

松坂さん、OpenRTM MLの皆さま

産総研 安藤です

いずれはMacPorts公式に取り込んでもらうとして、とりあえず
インストールスクリプトを作成しました。こちらです↓

http://openrtm.a01.aist.go.jp/OpenRTM-aist/index.php?%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/C%2B%2B#f313856f

このスクリプト「のみ」をダウンロードして、実行していただければ、OpenRTM-aistが入ります。

あと、eclipseのMacOSX版を用意いたしました。こちらです↓
http://www.openrtm.org/OpenRTM-aist/html/E38380E382A6E383B3E383ADE383BCE383892FRTSystemEditorE383BBRTCBuilder-1.0.0.html#a82f4906

一応、これで MacOSXの公式対応としたいと思います。
ありがとうございました。>松坂さん

>> 最近、MacBookProを手に入れたので、
>> OpenRTM-aistのMacPortsを作ってみました。
>
> おー、それは素晴らしいです。
> OSX版もいよいよ公式化ですかね :)
>
>> できれば、この ports を www.openrtm.org で提供したいのですが、
>> どなたかやり方をご存じないでしょうか?
>
> 私は、SVNでportsリポジトリを登録する方法をとっていました。
> 以下のURLがその例です。
> http://openrtp.jp/repos/stuff/macports/trunk
>
> 詳しくは以下に書いてあります。
> http://staff.aist.go.jp/yosuke.matsusaka/openrtm
>
> port syncコマンドでsvn updateも自動でやってくれるようなのでこれで良いかなと
> 思っていたのですが、公式portsなどはどのようになっているのでしょうね。
> macportsのパッケージの審査はdebianほど厳格ではないようなので、いっそのこと
> 公式の方ににportsファイルをサブミットしてしまうのも手かもしれません。
>
> C++1.0.0版のportsの作成はまだでしたが、上記リポジトリの中にpython版のパッケー
> ジなども入っています。問題なさそうであれば取り込んでくださいませ。

ありがとうございます。
Python版、Java版も1.0.0-RELEASEでは、オフィシャルにMacOSX+MacPortsへの対応を
行っていきたいと思います。

>> また、インストールの度に毎度コンパイルするのも大変なので
>> バイナリパッケージもOpenRTMのサイトから提供できるといいのですが、
>> macports でこれが可能かどうか、どなたかご存じありませんか?
>
> OSXの場合、ソースベースのパッケージがmacports。
> バイナリベースのパッケージはfinkを使うというのが私の理解です。
> #違うかもしれませんが

これって、どうなんでしょうか?
http://guide.macports.org/#using.binaries
一応バイナリパッケージもできるみたいですが、apt-getやFreeBSDのpackageみたいに
あるサイトのパッケージを勝手に依存関係も考慮してダウンロード・インストールして
くれるコマンドなどはないみたいですね。

とりあえず、dmgは作ることはできて、GUIのインストーラでインストールできましたが、
port installed OpenRTM-aist とやっても、リストに出てきませんでした。
どうやってアンインストールするのか。。。

root
Offline
Last seen: 1 day 5 hours ago
Joined: 2009-06-23 14:31
[openrtm-users 01145] case sensitive file name in OpenRTM-aist

安藤さん

松坂です。

2010/2/24 Ando Noriaki :
> いずれはMacPorts公式に取り込んでもらうとして、とりあえず
> インストールスクリプトを作成しました。こちらです↓
>
> http://openrtm.a01.aist.go.jp/OpenRTM-aist/index.php?%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/C%2B%2B#f313856f
>
> このスクリプト「のみ」をダウンロードして、実行していただければ、OpenRTM-aistが入ります。

URLはこちらですね。確認しました。
http://www.openrtm.org/OpenRTM-aist/html/E38380E382A6E383B3E383ADE383BCE383892FC2B2B.html

> あと、eclipseのMacOSX版を用意いたしました。こちらです↓
> http://www.openrtm.org/OpenRTM-aist/html/E38380E382A6E383B3E383ADE383BCE383892FRTSystemEditorE383BBRTCBuilder-1.0.0.html#a82f4906
>
> 一応、これで MacOSXの公式対応としたいと思います。

すばらしいです。お疲れ様でした。

> Python版、Java版も1.0.0-RELEASEでは、オフィシャルにMacOSX+MacPortsへの対応を
> 行っていきたいと思います。

了解しました。
オフィシャル化後も、パッチの作成など微力ながら協力させていただきます。

> これって、どうなんでしょうか?
> http://guide.macports.org/#using.binaries
> 一応バイナリパッケージもできるみたいですが、apt-getやFreeBSDのpackageみたいに
> あるサイトのパッケージを勝手に依存関係も考慮してダウンロード・インストールして
> くれるコマンドなどはないみたいですね。
>
> とりあえず、dmgは作ることはできて、GUIのインストーラでインストールできましたが、
> port installed OpenRTM-aist とやっても、リストに出てきませんでした。
> どうやってアンインストールするのか。。。

OSXのアンインストール方法は他のソフトでも結構微妙です(アプリケーションを単純に
ゴミ箱フォルダに捨てるだけしか方法がなく、関連ファイルが消えていなかったり、、、)。
良くできたソフトはアンインストーラを自分で用意してくれているのですが。

macportsのバイナリパッケージ化はあまり使われている事例を見たことがありません。
おまけ機能という位置づけなのかな、と私は解釈しています。

fink(http://www.finkproject.org/)はaptベースで依存関係を解消してくれるバイナリベースの
パッケージ管理ソフトなのですが、以前はOSのアップデートスピードに追いついていな
かったりソフトのバージョンが古かったりで、あまり人気がありませんでした(今は分かり
ませんが)。

debianの文化に慣れた人がいきなりmacportsを使い始めると、長ったらしいコンパイルの
過程に面食らいますが、ソースベースのパッケージにはそれなりの利点もあり(variants
オプションを使ってコンパイルオプションをきめ細かく設定できるなど)慣れてしまえば
なかなか快適です。
omniORBやopencvやscilab(菅さんのプロジェクトには私も期待しています)なども
macportsであればすべて揃っているので、とりあえずこれで良いのではないでしょうか?

Log in or register to post comments

Download

latest Releases : 2.0.0-RELESE

2.0.0-RELESE Download page

Number of Projects

Choreonoid

Motion editor/Dynamics simulator

OpenHRP3

Dynamics simulator

OpenRTP

Integrated Development Platform

AIST RTC collection

RT-Components collection by AIST

TORK

Tokyo Opensource Robotics Association

DAQ-Middleware

Middleware for DAQ (Data Aquisition) by KEK