Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compile failure with clang6.0 llvm-6.0 #157

Open
uniartisan opened this issue Jun 11, 2021 · 8 comments
Open

compile failure with clang6.0 llvm-6.0 #157

uniartisan opened this issue Jun 11, 2021 · 8 comments

Comments

@uniartisan
Copy link

my system is raspberry os (64 bit), I have read similar issues: #108 #150, but the issue still occurs.
here is my command:

sudo apt install clang-6.0 libllvm6.0 llvm-6.0-dev
cmake -DMULTI_THREADED=OFF .

here is CmakeError.txt:

Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_59bd7/fast && /usr/bin/make -f CMakeFiles/cmTC_59bd7.dir/build.make CMakeFiles/cmTC_59bd7.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_59bd7.dir/src.c.o
/usr/bin/cc   -DCMAKE_HAVE_LIBC_PTHREAD   -o CMakeFiles/cmTC_59bd7.dir/src.c.o   -c /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_59bd7
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_59bd7.dir/link.txt --verbose=1
/usr/bin/cc  -DCMAKE_HAVE_LIBC_PTHREAD    -rdynamic CMakeFiles/cmTC_59bd7.dir/src.c.o  -o cmTC_59bd7 
/usr/bin/ld: CMakeFiles/cmTC_59bd7.dir/src.c.o: in function `main':
src.c:(.text+0x34): undefined reference to `pthread_create'
/usr/bin/ld: src.c:(.text+0x3c): undefined reference to `pthread_detach'
/usr/bin/ld: src.c:(.text+0x48): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_59bd7.dir/build.make:87:cmTC_59bd7] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_59bd7/fast] 错误 2


Source file was:
#include <pthread.h>

void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_16556/fast && /usr/bin/make -f CMakeFiles/cmTC_16556.dir/build.make CMakeFiles/cmTC_16556.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_16556.dir/CheckFunctionExists.c.o
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_16556.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c
Linking C executable cmTC_16556
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_16556.dir/link.txt --verbose=1
/usr/bin/cc  -DCHECK_FUNCTION_EXISTS=pthread_create    -rdynamic CMakeFiles/cmTC_16556.dir/CheckFunctionExists.c.o  -o cmTC_16556  -lpthreads 
/usr/bin/ld: 找不到 -lpthreads
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_16556.dir/build.make:87:cmTC_16556] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_16556/fast] 错误 2



Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_68bb2/fast && /usr/bin/make -f CMakeFiles/cmTC_68bb2.dir/build.make CMakeFiles/cmTC_68bb2.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_68bb2.dir/src.c.o
/usr/bin/cc   -DCMAKE_HAVE_LIBC_PTHREAD   -o CMakeFiles/cmTC_68bb2.dir/src.c.o   -c /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_68bb2
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_68bb2.dir/link.txt --verbose=1
/usr/bin/cc  -DCMAKE_HAVE_LIBC_PTHREAD    -rdynamic CMakeFiles/cmTC_68bb2.dir/src.c.o  -o cmTC_68bb2 
/usr/bin/ld: CMakeFiles/cmTC_68bb2.dir/src.c.o: in function `main':
src.c:(.text+0x34): undefined reference to `pthread_create'
/usr/bin/ld: src.c:(.text+0x3c): undefined reference to `pthread_detach'
/usr/bin/ld: src.c:(.text+0x48): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_68bb2.dir/build.make:87:cmTC_68bb2] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_68bb2/fast] 错误 2


Source file was:
#include <pthread.h>

void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_9b2e8/fast && /usr/bin/make -f CMakeFiles/cmTC_9b2e8.dir/build.make CMakeFiles/cmTC_9b2e8.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_9b2e8.dir/CheckFunctionExists.c.o
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_9b2e8.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c
Linking C executable cmTC_9b2e8
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9b2e8.dir/link.txt --verbose=1
/usr/bin/cc  -DCHECK_FUNCTION_EXISTS=pthread_create    -rdynamic CMakeFiles/cmTC_9b2e8.dir/CheckFunctionExists.c.o  -o cmTC_9b2e8  -lpthreads 
/usr/bin/ld: 找不到 -lpthreads
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_9b2e8.dir/build.make:87:cmTC_9b2e8] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_9b2e8/fast] 错误 2

How can I solve this? Wish some one can help me :)

@doe300
Copy link
Owner

doe300 commented Jun 11, 2021

You seem to not have any pthread library installed. For a minimal fix you could try to install sudo apt-get install libpthread-stubs0-dev, otherwise I would recommend installing sudo apt install build-essential which also installs GCC, but should provide all other development requirements.

@uniartisan
Copy link
Author

uniartisan commented Jun 11, 2021

You seem to not have any pthread library installed. For a minimal fix you could try to install sudo apt-get install libpthread-stubs0-dev, otherwise I would recommend installing sudo apt install build-essential which also installs GCC, but should provide all other development requirements.

pi@raspberrypi:~ $ sudo apt-get install libpthread-stubs0-dev
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
libpthread-stubs0-dev 已经是最新版 (0.4-1)。
libpthread-stubs0-dev 已设置为手动安装。
下列软件包是自动安装的并且现在不需要了:
  llvm-7-runtime llvm-runtime lxplug-volume python-colorzero rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。
pi@raspberrypi:~ $ sudo apt install build-essential
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
正在读取状态信息... 完成       
build-essential 已经是最新版 (12.6)。
下列软件包是自动安装的并且现在不需要了:
  llvm-7-runtime llvm-runtime lxplug-volume python-colorzero rpi-eeprom-images
使用'sudo apt autoremove'来卸载它(它们)。
升级了 0 个软件包,新安装了 0 个软件包,要卸载 0 个软件包,有 0 个软件包未被升级。

It seems that all the library are installed. However, the issue still occurs.
here is the latest output, which may help:

cat CMakeError.log 
Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_59bd7/fast && /usr/bin/make -f CMakeFiles/cmTC_59bd7.dir/build.make CMakeFiles/cmTC_59bd7.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_59bd7.dir/src.c.o
/usr/bin/cc   -DCMAKE_HAVE_LIBC_PTHREAD   -o CMakeFiles/cmTC_59bd7.dir/src.c.o   -c /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_59bd7
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_59bd7.dir/link.txt --verbose=1
/usr/bin/cc  -DCMAKE_HAVE_LIBC_PTHREAD    -rdynamic CMakeFiles/cmTC_59bd7.dir/src.c.o  -o cmTC_59bd7 
/usr/bin/ld: CMakeFiles/cmTC_59bd7.dir/src.c.o: in function `main':
src.c:(.text+0x34): undefined reference to `pthread_create'
/usr/bin/ld: src.c:(.text+0x3c): undefined reference to `pthread_detach'
/usr/bin/ld: src.c:(.text+0x48): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_59bd7.dir/build.make:87:cmTC_59bd7] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_59bd7/fast] 错误 2


Source file was:
#include <pthread.h>

void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_16556/fast && /usr/bin/make -f CMakeFiles/cmTC_16556.dir/build.make CMakeFiles/cmTC_16556.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_16556.dir/CheckFunctionExists.c.o
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_16556.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c
Linking C executable cmTC_16556
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_16556.dir/link.txt --verbose=1
/usr/bin/cc  -DCHECK_FUNCTION_EXISTS=pthread_create    -rdynamic CMakeFiles/cmTC_16556.dir/CheckFunctionExists.c.o  -o cmTC_16556  -lpthreads 
/usr/bin/ld: 找不到 -lpthreads
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_16556.dir/build.make:87:cmTC_16556] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_16556/fast] 错误 2



Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_68bb2/fast && /usr/bin/make -f CMakeFiles/cmTC_68bb2.dir/build.make CMakeFiles/cmTC_68bb2.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_68bb2.dir/src.c.o
/usr/bin/cc   -DCMAKE_HAVE_LIBC_PTHREAD   -o CMakeFiles/cmTC_68bb2.dir/src.c.o   -c /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_68bb2
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_68bb2.dir/link.txt --verbose=1
/usr/bin/cc  -DCMAKE_HAVE_LIBC_PTHREAD    -rdynamic CMakeFiles/cmTC_68bb2.dir/src.c.o  -o cmTC_68bb2 
/usr/bin/ld: CMakeFiles/cmTC_68bb2.dir/src.c.o: in function `main':
src.c:(.text+0x34): undefined reference to `pthread_create'
/usr/bin/ld: src.c:(.text+0x3c): undefined reference to `pthread_detach'
/usr/bin/ld: src.c:(.text+0x48): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_68bb2.dir/build.make:87:cmTC_68bb2] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_68bb2/fast] 错误 2


Source file was:
#include <pthread.h>

void* test_func(void* data)
{
  return data;
}

int main(void)
{
  pthread_t thread;
  pthread_create(&thread, NULL, test_func, NULL);
  pthread_detach(thread);
  pthread_join(thread, NULL);
  pthread_atfork(NULL, NULL, NULL);
  pthread_exit(NULL);

  return 0;
}

Determining if the function pthread_create exists in the pthreads failed with the following output:
Change Dir: /home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make cmTC_9b2e8/fast && /usr/bin/make -f CMakeFiles/cmTC_9b2e8.dir/build.make CMakeFiles/cmTC_9b2e8.dir/build
make[1]: 进入目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_9b2e8.dir/CheckFunctionExists.c.o
/usr/bin/cc   -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_9b2e8.dir/CheckFunctionExists.c.o   -c /usr/share/cmake-3.16/Modules/CheckFunctionExists.c
Linking C executable cmTC_9b2e8
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_9b2e8.dir/link.txt --verbose=1
/usr/bin/cc  -DCHECK_FUNCTION_EXISTS=pthread_create    -rdynamic CMakeFiles/cmTC_9b2e8.dir/CheckFunctionExists.c.o  -o cmTC_9b2e8  -lpthreads 
/usr/bin/ld: 找不到 -lpthreads
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_9b2e8.dir/build.make:87:cmTC_9b2e8] 错误 1
make[1]: 离开目录“/home/pi/workspace/pi/VC4C/CMakeFiles/CMakeTmp”
make: *** [Makefile:121:cmTC_9b2e8/fast] 错误 2

@uniartisan
Copy link
Author

Update:

pi@raspberrypi:~/workspace/pi/VC4C/CMakeFiles $ find /lib -name "*pthread*"
/lib/arm-linux-gnueabihf/libpthread.so.0
/lib/arm-linux-gnueabihf/libpthread-2.28.so
/lib/aarch64-linux-gnu/libpthread.so.0
/lib/aarch64-linux-gnu/libpthread-2.28.so

@doe300
Copy link
Owner

doe300 commented Jun 11, 2021

What are your versions of:

  • CMake
  • /usr/bin/cc

@uniartisan
Copy link
Author

Cmake:3.16.3-3~bpo10+1
gcc/g++:4:8.3.0-1

Thx a lot for your time, I have verified my project on the Raspberry Pi 4B. :)

@doe300
Copy link
Owner

doe300 commented Jun 12, 2021

Just FYI, if you are not aware, VC4CL won't work at all on 64-bit Raspbian or Raspberry Pi 4.

To solve the build problem, the only thing I can think of is to update your GCC, 4.8 is quite old, maybe that fixes something...

@uniartisan
Copy link
Author

Just FYI, if you are not aware, VC4CL won't work at all on 64-bit Raspbian or Raspberry Pi 4.

To solve the build problem, the only thing I can think of is to update your GCC, 4.8 is quite old, maybe that fixes something...

Thank you for your reply, VC4CL only works on Raspberry Pi 3B. I just adjust my ML program to 4B and test it in order to save time.
I will try build gcc-6 next week, and I will update if this solve the build problem.

By the way:
64-bit Raspbian is based on Debian, and its package is directly from debian arm64, which means some package is really old.

@jDietschi
Copy link

Thank you for your reply, VC4CL only works on Raspberry Pi 3B. I just adjust my ML program to 4B and test it in order to save time. I will try build gcc-6 next week, and I will update if this solve the build problem.

Is this really only compatible if Raspberry Pi 3B? I'm trying to set it up on my Raspberry Pi 3A and failing so far with the same CMakeErrors as @uniartisan

Also thank you so much for all your work!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants