find_package not finding Threads

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

find_package not finding Threads

Andrew Brownsword
I have an Ubuntu 16.04 ARMv7 system upon which I have built CLang 7.0 and am now trying to use it to build my CMake-based project that was previously working with the CLang 3.8.0 that I had installed via apt-get.  The new compiler does appear to be selected correctly when I run cmake.  The run fails when it tries this find_package call:

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)


With this error:

CMake Error at /usr/local/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find Threads (missing: Threads_FOUND)
Call Stack (most recent call first):
  /usr/local/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/cmake-3.8/Modules/FindThreads.cmake:212 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  src/libraries/civetweb/CMakeLists.txt:8 (find_package)



The libpthread.so resides in /usr/lib/arm-linux-gnueabihf/ on this system.  I am *not* cross-compiling, and I built CLang on the system itself.  I’ve looked at the REGEX that CMake is supposed to use to find this subdirectory and it looks correct (and it did work with CLang 3.8.0).

Any suggestions?






The CMakeError.log file contains this:

Determining if the pthread_create exist failed with the following output:
Change Dir: ~/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_1d4b8/fast"
/usr/bin/make -f CMakeFiles/cmTC_1d4b8.dir/build.make CMakeFiles/cmTC_1d4b8.dir/build
make[1]: Entering directory '~/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o
/usr/bin/clang   -Wall -fno-strict-aliasing    -o CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o   -c ~/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_1d4b8
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1d4b8.dir/link.txt --verbose=1
/usr/bin/clang  -Wall -fno-strict-aliasing     CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o  -o cmTC_1d4b8 
CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o: In function `main':
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x4): undefined reference to `pthread_create'
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x8): undefined reference to `pthread_create'
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x24): undefined reference to `pthread_create'
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x28): undefined reference to `pthread_create'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
CMakeFiles/cmTC_1d4b8.dir/build.make:97: recipe for target 'cmTC_1d4b8' failed
make[1]: *** [cmTC_1d4b8] Error 1
make[1]: Leaving directory '~/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_1d4b8/fast' failed
make: *** [cmTC_1d4b8/fast] Error 2

File ~/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: ~/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_81507/fast"
/usr/bin/make -f CMakeFiles/cmTC_81507.dir/build.make CMakeFiles/cmTC_81507.dir/build
make[1]: Entering directory '~/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_81507.dir/CheckFunctionExists.c.o
/usr/bin/clang   -Wall -fno-strict-aliasing -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_81507.dir/CheckFunctionExists.c.o   -c /usr/local/share/cmake-3.8/Modules/CheckFunctionExists.c
Linking C executable cmTC_81507
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_81507.dir/link.txt --verbose=1
/usr/bin/clang  -Wall -fno-strict-aliasing -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTC_81507.dir/CheckFunctionExists.c.o  -o cmTC_81507 -lpthreads 
/usr/bin/ld: cannot find -lpthreads
clang: error: linker command failed with exit code 1 (use -v to see invocation)
CMakeFiles/cmTC_81507.dir/build.make:97: recipe for target 'cmTC_81507' failed
make[1]: *** [cmTC_81507] Error 1
make[1]: Leaving directory '~/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_81507/fast' failed
make: *** [cmTC_81507/fast] Error 2


Determining if the include file pthread.h exists failed with the following output:
Change Dir: ~/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_83cc7/fast"
/usr/bin/make -f CMakeFiles/cmTC_83cc7.dir/build.make CMakeFiles/cmTC_83cc7.dir/build
make[1]: Entering directory '~/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o
/usr/local/bin/clang   -Wall -fno-strict-aliasing    -o CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o   -c ~/CMakeFiles/CMakeTmp/CheckIncludeFile.c
In file included from ~/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:
In file included from /usr/include/pthread.h:23:
/usr/include/sched.h:28:10: fatal error: 'stddef.h' file not found
#include <stddef.h>
         ^~~~~~~~~~
1 error generated.
CMakeFiles/cmTC_83cc7.dir/build.make:65: recipe for target 'CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o' failed
make[1]: *** [CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o] Error 1
make[1]: Leaving directory '~/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_83cc7/fast' failed
make: *** [cmTC_83cc7/fast] Error 2





--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: find_package not finding Threads

Andrew Brownsword
I updated to CMake 3.11.0, but still got the same error.  I have gotten around the problem by removing the find_package and forcing -pthread on the C/C++ command line, however this is an unsatisfying resolution to the problem.

On Mar 30, 2018, at 12:06 PM, Andrew Brownsword <[hidden email]> wrote:

I have an Ubuntu 16.04 ARMv7 system upon which I have built CLang 7.0 and am now trying to use it to build my CMake-based project that was previously working with the CLang 3.8.0 that I had installed via apt-get.  The new compiler does appear to be selected correctly when I run cmake.  The run fails when it tries this find_package call:

set(THREADS_PREFER_PTHREAD_FLAG ON)
find_package(Threads REQUIRED)


With this error:

CMake Error at /usr/local/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
  Could NOT find Threads (missing: Threads_FOUND)
Call Stack (most recent call first):
  /usr/local/share/cmake-3.8/Modules/FindPackageHandleStandardArgs.cmake:377 (_FPHSA_FAILURE_MESSAGE)
  /usr/local/share/cmake-3.8/Modules/FindThreads.cmake:212 (FIND_PACKAGE_HANDLE_STANDARD_ARGS)
  src/libraries/civetweb/CMakeLists.txt:8 (find_package)



The libpthread.so resides in /usr/lib/arm-linux-gnueabihf/ on this system.  I am *not* cross-compiling, and I built CLang on the system itself.  I’ve looked at the REGEX that CMake is supposed to use to find this subdirectory and it looks correct (and it did work with CLang 3.8.0).

Any suggestions?






The CMakeError.log file contains this:

Determining if the pthread_create exist failed with the following output:
Change Dir: ~/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_1d4b8/fast"
/usr/bin/make -f CMakeFiles/cmTC_1d4b8.dir/build.make CMakeFiles/cmTC_1d4b8.dir/build
make[1]: Entering directory '~/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o
/usr/bin/clang   -Wall -fno-strict-aliasing    -o CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o   -c ~/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_1d4b8
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_1d4b8.dir/link.txt --verbose=1
/usr/bin/clang  -Wall -fno-strict-aliasing     CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o  -o cmTC_1d4b8 
CMakeFiles/cmTC_1d4b8.dir/CheckSymbolExists.c.o: In function `main':
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x4): undefined reference to `pthread_create'
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x8): undefined reference to `pthread_create'
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x24): undefined reference to `pthread_create'
~/CMakeFiles/CMakeTmp/CheckSymbolExists.c:(.text+0x28): undefined reference to `pthread_create'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
CMakeFiles/cmTC_1d4b8.dir/build.make:97: recipe for target 'cmTC_1d4b8' failed
make[1]: *** [cmTC_1d4b8] Error 1
make[1]: Leaving directory '~/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_1d4b8/fast' failed
make: *** [cmTC_1d4b8/fast] Error 2

File ~/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: ~/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_81507/fast"
/usr/bin/make -f CMakeFiles/cmTC_81507.dir/build.make CMakeFiles/cmTC_81507.dir/build
make[1]: Entering directory '~/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_81507.dir/CheckFunctionExists.c.o
/usr/bin/clang   -Wall -fno-strict-aliasing -DCHECK_FUNCTION_EXISTS=pthread_create   -o CMakeFiles/cmTC_81507.dir/CheckFunctionExists.c.o   -c /usr/local/share/cmake-3.8/Modules/CheckFunctionExists.c
Linking C executable cmTC_81507
/usr/local/bin/cmake -E cmake_link_script CMakeFiles/cmTC_81507.dir/link.txt --verbose=1
/usr/bin/clang  -Wall -fno-strict-aliasing -DCHECK_FUNCTION_EXISTS=pthread_create    CMakeFiles/cmTC_81507.dir/CheckFunctionExists.c.o  -o cmTC_81507 -lpthreads 
/usr/bin/ld: cannot find -lpthreads
clang: error: linker command failed with exit code 1 (use -v to see invocation)
CMakeFiles/cmTC_81507.dir/build.make:97: recipe for target 'cmTC_81507' failed
make[1]: *** [cmTC_81507] Error 1
make[1]: Leaving directory '~/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_81507/fast' failed
make: *** [cmTC_81507/fast] Error 2


Determining if the include file pthread.h exists failed with the following output:
Change Dir: ~/CMakeFiles/CMakeTmp

Run Build Command:"/usr/bin/make" "cmTC_83cc7/fast"
/usr/bin/make -f CMakeFiles/cmTC_83cc7.dir/build.make CMakeFiles/cmTC_83cc7.dir/build
make[1]: Entering directory '~/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o
/usr/local/bin/clang   -Wall -fno-strict-aliasing    -o CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o   -c ~/CMakeFiles/CMakeTmp/CheckIncludeFile.c
In file included from ~/CMakeFiles/CMakeTmp/CheckIncludeFile.c:1:
In file included from /usr/include/pthread.h:23:
/usr/include/sched.h:28:10: fatal error: 'stddef.h' file not found
#include <stddef.h>
         ^~~~~~~~~~
1 error generated.
CMakeFiles/cmTC_83cc7.dir/build.make:65: recipe for target 'CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o' failed
make[1]: *** [CMakeFiles/cmTC_83cc7.dir/CheckIncludeFile.c.o] Error 1
make[1]: Leaving directory '~/CMakeFiles/CMakeTmp'
Makefile:126: recipe for target 'cmTC_83cc7/fast' failed
make: *** [cmTC_83cc7/fast] Error 2





--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
https://cmake.org/mailman/listinfo/cmake