flexisip build fails with missing -lpthreads
Hallo team,
I want to build flexisip (ver 2.0.4) with cmake, as explained in the Installation document I left the default options when configuring:
./prepare.py -DENABLE_CONFERENCE=ON -DENABLE_JWE_AUTH_PLUGIN=ON -DENABLE_EXTERNAL_AUTH_PLUGIN=ON -DENABLE_PRESENCE=ON -DENABLE_PROTOBUF=ON -DENABLE_SNMP=ON -DENABLE_SOCI=ON -DENABLE_TRANSCODER=ON make -j8
However the build stops with
Determining if the pthread_create exist failed with the following output: Change Dir: /tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_95546/fast"
gmake[4]: Entering directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp'
/usr/bin/gmake -f CMakeFiles/cmTC_95546.dir/build.make CMakeFiles/cmTC_95546.dir/build
gmake[5]: Entering directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp'
Building C object CMakeFiles/cmTC_95546.dir/CheckSymbolExists.c.o
/usr/bin/cc -o CMakeFiles/cmTC_95546.dir/CheckSymbolExists.c.o -c /tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp/CheckSymbolExists.c
Linking C executable cmTC_95546
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_95546.dir/link.txt --verbose=1
/usr/bin/cc -rdynamic CMakeFiles/cmTC_95546.dir/CheckSymbolExists.c.o -o cmTC_95546
/usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: CMakeFiles/cmTC_95546.dir/CheckSymbolExists.c.o: in function main': CheckSymbolExists.c:(.text+0x1b): undefined reference to pthread_create'
collect2: error: ld returned 1 exit status
gmake[5]: *** [CMakeFiles/cmTC_95546.dir/build.make:98: cmTC_95546] Error 1
gmake[5]: Leaving directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp'
gmake[4]: *** [Makefile:126: cmTC_95546/fast] Error 2
gmake[4]: Leaving directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp'
File /tmp/flexisip/WORK/flexisip/Build/flexisip/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: /tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp
Run Build Command:"/usr/bin/gmake" "cmTC_08c61/fast" gmake[4]: Entering directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp' /usr/bin/gmake -f CMakeFiles/cmTC_08c61.dir/build.make CMakeFiles/cmTC_08c61.dir/build gmake[5]: Entering directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_08c61.dir/CheckFunctionExists.c.o /usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -o CMakeFiles/cmTC_08c61.dir/CheckFunctionExists.c.o -c /usr/share/cmake/Modules/CheckFunctionExists.c Linking C executable cmTC_08c61 /usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_08c61.dir/link.txt --verbose=1 /usr/bin/cc -DCHECK_FUNCTION_EXISTS=pthread_create -rdynamic CMakeFiles/cmTC_08c61.dir/CheckFunctionExists.c.o -o cmTC_08c61 -lpthreads /usr/lib64/gcc/x86_64-suse-linux/7/../../../../x86_64-suse-linux/bin/ld: cannot find -lpthreads collect2: error: ld returned 1 exit status gmake[5]: *** [CMakeFiles/cmTC_08c61.dir/build.make:98: cmTC_08c61] Error 1 gmake[5]: Leaving directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp' gmake[4]: *** [Makefile:126: cmTC_08c61/fast] Error 2 gmake[4]: Leaving directory '/tmp/flexisip/WORK/flexisip/Build/flexisip/CMakeFiles/CMakeTmp'
I added the option -DENABLE_CMAKE_CXX_FLAGS="-pthread" and I see that this option is being used, however, this does not help. Building stops at the very same point.
Where does the linker option "-lpthreads" does come from? I compiled many, many packages, including the ones making use of cmake, however, never ran into this problem. And I wonder why it is threads and not thread (additional "s" at the end).
Martin.
P. S. Compiler is gcc 7.5.0, cmake is 3.10.2 - if that matters.