.bashrcから起きた意味わからんエラー
概要
よくわからんエラーに遭遇して、苦戦したのでメモる。
起こったこと(時系列)
①vscodeのターミナルを開くと何かエラーみたいな文が表示される
②エラーコードを呼んで.bashrc
みても該当する箇所が見つからない
③どうやら.bashrc
に問題ないのかと考える
④catkin_make
を使用してワークスペース内(ROS)のコードのビルドを行おうとしたがエラーが吐かれる
⑤エラーを読むとrosがなんか使用できないみたいなことになってることに気づく
⑥roscore
が動かないことに気がつく
⑦とりあえずrosが関係していることがわかる
⑧.bashrc
に書いてあるros関係の文をコメントアウトして根本原因を炙り出す
⑨source /opt/ros/melodic/setup.bash
こいつをコメントアウトするとエラーが消えることに気が付く
⑩中身を見る文が少なくとなぜか~/catkin_ws/devel/setup.bash
と同じ内容になっていた(本来ならずらずらと書かれている)
⑪もっかいcatkin_make
に戻って生成されるエラーログを読む
⑫/usr/bin/ld: -lpthreads が見つかりません
というエラーが発生してることに気が付く
⑬なんか-lpthreads
じゃなくて-lpthread
な気がしてくる
⑭結果的にどうにもできなさそうで、rosが関係していることは知っているのでrosをpurgeすることに決めた。(再構成)
⑮再構成したもののroscore
したらエラーが出てくる
⑯以前のrosの設定ファイルを消して解決
必要な作業&エラー内容
①
bash: /tmp/setup.sh.DPE4BtgiZY: cannot overwrite existing file bash: [: 0: unary operator expected
⑯
~$ sudo rm -r ~/.ros/
⑮
Traceback (most recent call last): File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 279, in main write_pid_file(options.pid_fn, options.core, options.port) File "/opt/ros/melodic/lib/python2.7/dist-packages/roslaunch/__init__.py", line 111, in write_pid_file with open(pid_fn, "w") as f: IOError: [Errno 13] Permission denied: '/home/raspi-cat/.ros/roscore-11311.pid'
⑪
Determining if the pthread_create exist failed with the following output: Change Dir: /home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp Run Build Command:"/usr/bin/make" "cmTC_308ca/fast" /usr/bin/make -f CMakeFiles/cmTC_308ca.dir/build.make CMakeFiles/cmTC_308ca.dir/build make[1]: ディレクトリ '/home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp' に入ります Building C object CMakeFiles/cmTC_308ca.dir/CheckSymbolExists.c.o /usr/bin/cc -o CMakeFiles/cmTC_308ca.dir/CheckSymbolExists.c.o -c /home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c Linking C executable cmTC_308ca /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_308ca.dir/link.txt --verbose=1 /usr/bin/cc -rdynamic CMakeFiles/cmTC_308ca.dir/CheckSymbolExists.c.o -o cmTC_308ca CMakeFiles/cmTC_308ca.dir/CheckSymbolExists.c.o: 関数 `main' 内: CheckSymbolExists.c:(.text+0x1b): `pthread_create' に対する定義されていない参照です collect2: error: ld returned 1 exit status CMakeFiles/cmTC_308ca.dir/build.make:97: recipe for target 'cmTC_308ca' failed make[1]: *** [cmTC_308ca] Error 1 make[1]: ディレクトリ '/home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp' から出ます Makefile:126: recipe for target 'cmTC_308ca/fast' failed make: *** [cmTC_308ca/fast] Error 2 File /home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp/CheckSymbolExists.c: /* */ #include <pthread.h> int main(int argc, char** argv) { (void)argv; #ifndef pthread_create return ((int*)(&pthread_create))[argc]; #else (void)argc; return 0; #endif } Determining if the function pthread_create exists in the pthreads failed with the following output: Change Dir: /home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp Run Build Command:"/usr/bin/make" "cmTC_318a8/fast" /usr/bin/make -f CMakeFiles/cmTC_318a8.dir/build.make CMakeFiles/cmTC_318a8.dir/build make[1]: ディレクトリ '/home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp' に入ります Building C object CMakeFiles/cmTC_318a8.dir/CheckFunctionExists.c.o /usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTC_318a8.dir/CheckFunctionExists.c.o -c /usr/share/cmake-3.10/Modules/CheckFunctionExists.c Linking C executable cmTC_318a8 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_318a8.dir/link.txt --verbose=1 /usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -rdynamic CMakeFiles/cmTC_318a8.dir/CheckFunctionExists.c.o -o cmTC_318a8 -lpthreads /usr/bin/ld: -lpthreads が見つかりません collect2: error: ld returned 1 exit status CMakeFiles/cmTC_318a8.dir/build.make:97: recipe for target 'cmTC_318a8' failed make[1]: *** [cmTC_318a8] Error 1 make[1]: ディレクトリ '/home/raspi-cat/test_ws/build/CMakeFiles/CMakeTmp' から出ます Makefile:126: recipe for target 'cmTC_318a8/fast' failed make: *** [cmTC_318a8/fast] Error 2