BEIKE blog

備忘録です

.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