[openrtm-users 03030] Re: LD_LIBRARY_PATHについて

原功 isao-hara @ aist.go.jp
2014年 5月 2日 (金) 21:25:03 JST


室岡さん:

こんにちは、産総研の原です。

フォローは、安藤さんからもあるとは思いますが。。。。

Logを拝見したのですが、rtcdは、execveで実行されていますよね?
この時に環境変数が設定されていないようですので、実行shellの環境変数と
異なるののは当然かと思います。

LD_LIBRARY_PATHを設定したshellからrtcdを起動するか、execveのシステムコールの引数で、LD_LIBRARY_PATHの値を引き渡さないと、デフォルトのままになると思います。

これは、UNIX系のシステムでは、標準的な動作だと思います。rtcdは、dlopen関数を呼び出しているだけですので、OSの標準的な振る舞いしかしないと思います。

rtcdを起動させているプログラムがどうしているかは、こちらではわかりませんので、プログラムの開発者にも同じように問い合わせていただければよいと思います。

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


2014年5月2日 20:23 Masaki Murooka <murooka @ jsk.t.u-tokyo.ac.jp>:

> 原様,安藤様
>
>
> 室岡と申します.
> ご返答ありがとうございます.
>
>
> 実行結果を追加して説明させていただきます.
> OpenRTM初心者ですので,間違い等ございましたら是非ご指摘ください.
>
>
> hrpsys-baseをROSから使っておりまして[1],
> ROS標準の起動スクリプトファイルの中でrtcdや各コンポーネントを起動しています.
> A,Bの具体的なファイル名はAはRobotHardware.so,BはlibhrpIo.soとなっています
>
> [1] https://github.com/start-jsk/hrpsys
>
>
> RobotHardware.soはlibhrpIo.so <http://RobotHardware.xn--solibhrpio-xg4i.so>
> をダイナミックリンクしています.
> 複数のlibhrpIo.soというファイルがあるのですが,
> こちらの都合でrpathを使わずに特定のlibhrpIo.soにリンクさせたいという状況です.
>
> /home/murooka/catkin_ws/ws_rtmros_common/devel/lib/libhrpIo.so
> (以降,libhrpIo.so<bad>)
>
> /home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/libhrpIo.so(以降,libhrpIo.so<good>)
> というファイルがあって,
> RobotHardware.soをlibhrpIo.so <http://RobotHardware.xn--solibhrpio-xr4i.so>
> <good>にリンクさせようとしています.
> RobotHardware.soにrpathを設定していない状況で,
> LD_LIBRARY_PATHの先頭にlibhrpIo.so<good>を含むディレクトリのパスを追加しています.
> ldd RobotHardware.so では,libhrpIo.so<good>をリンクしているという結果が得られるのですが,
> ROS起動スクリプトから起動するとlibhrpIo.so<bad>をリンクしてしまいます.
>
>
>
>
> ログファイルを2つ添付させて頂きましたが,
> roslaunch-ros-default-log-20140502.log は,ROS起動時に自動生成されるログファイル,
> rtmlaunch-terminal-output-with-strace-20140502.log
> はターミナル出力でstraceを付けたrtcdの出力が含まれています.
>
>
> roslaunch-ros-default-log-20140502.log
> 内に出力される実行時のLID_LIBRARY_PATHは以下のようになっており,
> libhrpIo.so<good>を含むディレクトリが先頭に指定されています.
>
> 'LD_LIBRARY_PATH':
>
> '/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/:/home/murooka/catkin_ws/ws_jsk_roseus/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/devel/lib:/home/murooka/catkin_ws/ws_rtmros_tutorials/devel/lib:/home/murooka/catkin_ws/ws_rtmros_common/devel/lib:/home/murooka/catkin_ws/ws_jsk_control/devel/lib:/home/murooka/catkin_ws/ws_jsk_pr2eus/devel/lib:/home/murooka/catkin_ws/ws_jsk_recognition/devel/lib:/home/murooka/catkin_ws/ws_jsk_model_tools/devel/lib:/home/murooka/catkin_ws/ws_jsk_roseus/devel/lib:/home/murooka/catkin_ws/ws_jsk_common/devel/lib:/opt/ros/hydro/lib:/home/murooka/catkin_ws/ws_jsk_roseus/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/catkin_ws/ws_jsk_roseus/src/jsk-ros-pkg/jsk_roseus/euslisp/jskeus/eus/Linux64/bin:/usr/lib/gazebo-2.2/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins:/home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/plugins'
>
>
> rtmlaunch-terminal-output-with-strace-20140502.log の最後の方で
> RobotHardware.soをlddしており,
> 以下のようにlibhrpIo.so<good>をリンクしています.
>
> ldd
> /home/murooka/catkin_ws/ws_rtmros_common/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so
> libhrpIo.so =>
> /home/murooka/catkin_ws/ws_rtmros_gazebo/src/rtm-ros-robotics/rtmros_gazebo/hrpsys_gazebo_general/lib/libhrpIo.so
> (0x00007f0727a6b000)
>
> また,rtmlaunch-terminal-output-with-strace-20140502.log の最後の方で
> RobotHardware.soにrpathが無いことを確認しています.
>
> chrpath
> /home/murooka/catkin_ws/ws_rtmros_common/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so
>
> /home/murooka/catkin_ws/ws_rtmros_common/src/rtm-ros-robotics/openrtm_common/hrpsys/lib/RobotHardware.so:
> no rpath or runpath tag found.
>
> ただ,rtmlaunch-terminal-output-with-strace-20140502.logの前半にある
> 起動時のstarceのログでは
> 以下のようにlibhrpIo.so<bad>がopenされてしまています.
>
> open("/home/murooka/catkin_ws/ws_rtmros_common/devel/lib/libhrpIo.so",
> O_RDONLY|O_CLOEXEC) = 14
>
>
>
>
> このような結果から
> openrtmコンポーネントの動的リンクのためにdlopenする際に
> LD_LIBRARY_PATHが反映されていないorうわ書かれているのではないかと
> 考えて質問させて頂きました.
>
>
> 以上,長文になってしまい恐縮ですが,
> よろしくお願い致します.
>
>
> 2014年5月2日 1:17 Ando Noriaki <n-ando @ aist.go.jp>:
> > 室岡様
> >
> > 安藤です
> >
> > rtcd内の動的リンクライブラリのロードにはLinuxではdlopenを
> > 使っているだけですので,LD_LIBRARY_PATHは効くと思います。
> > ソースをざっと見まわしてみても特に変わったことはしていないようでした。
> >
> > $ ldd A.so
> > $ ldd B.so
> >
> > の結果を教えていただけますか?
> >
> > A.so をリンクするとき -lB はつけてますでしょうか?
> >
> >
> >
> > 2014年4月30日 22:08 Masaki Murooka <murooka @ jsk.t.u-tokyo.ac.jp>:
> >> 室岡です
> >>
> >> rtcdを使ってAというディレクトリにあるA.soというコンポーネントを
> >> manager.modules.preload:A.so
> >> manager.modules.load_path:A
> >> というオプションをつかってで読み込んでいるのですが,
> >> sh 1: rtcprof: not found
> >> というエラーがでています.
> >> A.soはBというディレクトリにあるB.so<http://A.xn--sobb-x53clao4y3a9a20ayjqfwnra85c5a.so>
> というライブラリに依存しており,
> >> manager.modules.load_path:B,A
> >> としてみたり,
> >> export LD_LIBRARY_PATH=A:B
> >> しても同じ状況です.
> >> ただ,
> >> manager.modules.preload:B.so,A.so
> >> とすると,ちゃんとB.soが読み込まれています.
> >>
> >> rtcdで使う.soの読み込み時にはLD_LIBRARY_PATHは見ないのでしょうか?
> >>
> >> --
> >> =========================
> >> 室岡雅樹(Masaki Murooka)
> >> 東京大学大学院 情報理工学系研究科 知能機械情報学専攻
> >> 稲葉・岡田研究室(情報システム工学研究室)
> >> murooka @ jsk.t.u-tokyo.ac.jp
> >> _______________________________________________
> >> openrtm-users mailing list
> >> openrtm-users @ openrtm.org
> >> http://www.openrtm.org/mailman/listinfo/openrtm-users
> > _______________________________________________
> > openrtm-users mailing list
> > openrtm-users @ openrtm.org
> > http://www.openrtm.org/mailman/listinfo/openrtm-users
>
>
>
> --
> =========================
> 室岡雅樹(Masaki Murooka)
> 東京大学大学院 情報理工学系研究科 知能機械情報学専攻
> 稲葉・岡田研究室(情報システム工学研究室)
> murooka @ jsk.t.u-tokyo.ac.jp
>
> _______________________________________________
> openrtm-users mailing list
> openrtm-users @ openrtm.org
> http://www.openrtm.org/mailman/listinfo/openrtm-users
>
>


-- 
------------------------------------------------------------
産業技術総合研究所   知能システム研究部門
ディペンダブルシステム研究グループ 主任研究員
ソフトウェアプラットフォーム研究班 班長
原  功 <Isao-Hara @ aist.go.jp>
Isao HARA, Senior Researcher, ISRI, ,AIST,Japan
TEL: +81-29-861-5973
-------------- next part --------------
HTML$B$NE:IU%U%!%$%k$rJ]4I$7$^$7$?(B...
URL: <http://www.openrtm.org/pipermail/openrtm-users/attachments/20140502/66550275/attachment.html>


More information about the openrtm-users mailing list