open-rdc / orne_navigation

This repository provides mobile robot navigation system with i-Cart mini for Tsukuba Challenge under Project ORNE.
BSD 2-Clause "Simplified" License
70 stars 27 forks source link

error while loading shared libraries: (hogehoge).so といったものが出た場合 #445

Closed NaokiSato102 closed 4 years ago

NaokiSato102 commented 4 years ago

初めに

Orne-γへ接続して操作しようとした際、エラーが発生し、それを解決しました。 この経験を踏まえWikiに加筆したいと考えましたが、いきなり加筆するのはどうかと思いましたのでどこに加筆すべきか、新規で項目を立ち上げるべきか、もっと一般的に論じれないか、などを協議したいと考えましたのでissueを立ち上げました。

本件

Orne-γへ接続して操作しようとした際、エラーが発生

oslaunch_icart_mini_driver_teleop_joy_launch において

/opt/ros/kinetic/lib/rosout/rosout: error while loading shared libraries: libroscpp.so: cannot open shared object file: No such file or directory
process[rosout-1]: started with pid [27692]
started core service [/rosout]
[rosout-1] process has died [pid 27692, exit code 127, cmd /opt/ros/kinetic/lib/rosout/rosout __name:=rosout __log:=/home/naoki/.ros/log/19c60180-05df-11ea-8362-84a6c8d02b1d/rosout-1.log].
log file: /home/naoki/.ros/log/19c60180-05df-11ea-8362-84a6c8d02b1d/rosout-1*.log
[rosout-1] restarting process

roslaunch orne_bringup orne_gamma.launch において

/opt/ros/kinetic/lib/rosout/rosout: error while loading shared libraries: libroscpp.so: cannot open shared object file: No such file or directory
process[rosout-1]: started with pid [26613]
started core service [/rosout]
[rosout-1] process has died [pid 26613, exit code 127, cmd /opt/ros/kinetic/lib/rosout/rosout __name:=rosout __log:=/home/naoki/.ros/log/d291be68-05dd-11ea-8362-84a6c8d02b1d/rosout-1.log].
log file: /home/naoki/.ros/log/d291be68-05dd-11ea-8362-84a6c8d02b1d/rosout-1*.log
[rosout-1] restarting process

そのほか、ROSにおいてtab補完を行おうとした際

rospack: error while loading shared libraries: librospack.so: cannot open shared object file: No such file or directory
rosstack: error while loading shared libraries: librospack.so: cannot open shared object file: No such file or directory

解決法

環境変数が何らかの理由で崩れていることが直接的原因。 それにより共有ライブラリなどへの正常なアクセスができていないのが原因でこのエラーが発生した。

error while loading shared libraries: (hogehoge).so: cannot open shared object file: No such file or directory

というエラーメッセージがそれを示している。 特に、今回はLD_LIBRARY_PATHをいじっていたことが原因でこの事態が発生した。

191118追記 いじっていた内容を詳しく記載 及び 解決の一例

以前、THETA-API(Camera-API)使用のため、.bashrcにて

LD_LIBRARY_PATH=~/dev/ricoh-camera-usb-sdk-cpp-linux-x86-x64-1.1.0/lib/x64

と書いていた。この記述方法では既存のLD_LIBRARY_PATHを上書きしてしまう=ROSによって追加された環境変数が働かない。 正しくは、

export <記述追加する環境変数>=$<記述追加する環境変数>:<追加内容>
今回ならば
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:~/dev/ricoh-camera-usb-sdk-cpp-linux-x86-x64-1.1.0/lib/x64"

と記述する。すると、上書きでなく追記となるため既存の環境を害することなく記述可能?である。

今回の場合は自分に身の覚えのある編集箇所であったため検証・対応が簡単であったが、 そうでもない、自分の意図しない所での改変があった場合は対処が難しいと思われるが、 正常動作している人と自分とでprintenvを用いて環境変数を表示し比較し不足していると思われる部分を別途追記という手で対処することも可能であるかもしれない。 別途他のサイト、ROS公式などを見つつ対処していただきたい。

考えうる対策

(環境変数の)定期的なバックアップ

yasuohayashibara commented 4 years ago

他の人にとって有益と思われる情報をissueに書き込むのは良いことだと思います. この情報は他の人も遭遇する問題かもしれないので,有益だと思います.

アドバイスとしては,

NaokiSato102 commented 4 years ago

こんなものでよろしいですかね? タイトルは長ったらしいですが、検索への引っかかりやすさを優先しました。

yasuohayashibara commented 4 years ago

良くなったと思います.以下,追加の指摘です.

error while loading shared libraries: (hogehoge).so で十分だと思います.長くなると一覧表示のときに2行になってしまい,表示される情報が少なくなります. (変更しなくても構いませんが,今後のため述べておきます.)

理由:

taishiyamamoto commented 4 years ago

ミーテイングで情報を共有したのでcloseします.

NaokiSato102 commented 4 years ago

https://github.com/open-rdc/orne_navigation/wiki/ORNE%E3%81%8C%E5%8B%95%E3%81%8B%E3%81%AA%E3%81%84%E6%99%82 へ追加を決定。