You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Jiri Daněk (Jira)" <ji...@apache.org> on 2021/09/16 13:02:00 UTC

[jira] [Updated] (PROTON-2435) ninja: error: '-lpthread', needed by 'c/libqpid-proton.so.11.14.0', missing and no known rule to make it

     [ https://issues.apache.org/jira/browse/PROTON-2435?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jiri Daněk updated PROTON-2435:
-------------------------------
    Description: 
When building Qpid Proton on CentOS 7 in Docker, using  [^Dockerfile] 

{noformat}
Step 8/9 : RUN cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/root/Work/qpid-install
 ---> Running in 290c464d8c69
-- The C compiler identification is GNU 4.8.5
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version "1.0.2k") 
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Could NOT find SWIG (missing:  SWIG_EXECUTABLE SWIG_DIR) 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1") 
-- Found CyrusSASL: /usr/lib64/libsasl2.so (found version "2.1.26") 
-- Found PythonInterp: /usr/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.6") 
-- Found PythonLibs: /usr/lib64/libpython3.6m.so (found suitable exact version "3.6.8") 
-- Looking for a CXX compiler
-- Looking for a CXX compiler - /usr/bin/c++
-- The CXX compiler identification is GNU 4.8.5
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Build type is "RelWithDebInfo" (has debug symbols)
-- PN_VERSION: 0.36.0 (SNAPSHOT)
-- Looking for clock_gettime
-- Looking for clock_gettime - found
-- Looking for strerror_r
-- Looking for strerror_r - found
-- Looking for epoll_wait
-- Looking for epoll_wait - found
-- Building the epoll proactor
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Could NOT find JsonCpp (missing:  JsonCpp_LIBRARY JsonCpp_INCLUDE_DIR) 
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Configuring done
-- Generating done
-- Build files have been written to: /qpid-proton/build
Removing intermediate container 290c464d8c69
 ---> 6832cb8c68ac
Step 9/9 : RUN ninja install
 ---> Running in 4dc6c077dce0
ninja: error: '-lpthread', needed by 'c/libqpid-proton.so.11.14.0', missing and no known rule to make it
{noformat}

I suspect this is because {{-lpthread}} is not an actual library on disk, but simply an alias for {{-pthread}} gcc switch. Older CMake cannot be told to prefer the switch variant, and it tries the library first, which succeeds for the purposes of the CMake project config check.

C.f. {{THREADS_PREFER_PTHREAD_FLAG}}, from https://cmake.org/cmake/help/v3.1/module/FindThreads.html

Workaround is to build project with {{make}}.

  was:
When building Qpid Proton on CentOS 7 in Docker, using 

{noformat}
Step 8/9 : RUN cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/root/Work/qpid-install
 ---> Running in 290c464d8c69
-- The C compiler identification is GNU 4.8.5
-- Check for working C compiler using: Ninja
-- Check for working C compiler using: Ninja -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version "1.0.2k") 
-- Looking for include file pthread.h
-- Looking for include file pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Could NOT find SWIG (missing:  SWIG_EXECUTABLE SWIG_DIR) 
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1") 
-- Found CyrusSASL: /usr/lib64/libsasl2.so (found version "2.1.26") 
-- Found PythonInterp: /usr/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.6") 
-- Found PythonLibs: /usr/lib64/libpython3.6m.so (found suitable exact version "3.6.8") 
-- Looking for a CXX compiler
-- Looking for a CXX compiler - /usr/bin/c++
-- The CXX compiler identification is GNU 4.8.5
-- Check for working CXX compiler using: Ninja
-- Check for working CXX compiler using: Ninja -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Build type is "RelWithDebInfo" (has debug symbols)
-- PN_VERSION: 0.36.0 (SNAPSHOT)
-- Looking for clock_gettime
-- Looking for clock_gettime - found
-- Looking for strerror_r
-- Looking for strerror_r - found
-- Looking for epoll_wait
-- Looking for epoll_wait - found
-- Building the epoll proactor
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Could NOT find JsonCpp (missing:  JsonCpp_LIBRARY JsonCpp_INCLUDE_DIR) 
-- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
-- Configuring done
-- Generating done
-- Build files have been written to: /qpid-proton/build
Removing intermediate container 290c464d8c69
 ---> 6832cb8c68ac
Step 9/9 : RUN ninja install
 ---> Running in 4dc6c077dce0
ninja: error: '-lpthread', needed by 'c/libqpid-proton.so.11.14.0', missing and no known rule to make it
{noformat}

I suspect this is because {{-lpthread}} is not an actual library on disk, but simply an alias for {{-pthread}} gcc switch. Older CMake cannot be told to prefer the switch variant, and it tries the library first, which succeeds for the purposes of the CMake project config check.

C.f. {{THREADS_PREFER_PTHREAD_FLAG}}, from https://cmake.org/cmake/help/v3.1/module/FindThreads.html

Workaround is to build project with {{make}}.


> ninja: error: '-lpthread', needed by 'c/libqpid-proton.so.11.14.0', missing and no known rule to make it
> --------------------------------------------------------------------------------------------------------
>
>                 Key: PROTON-2435
>                 URL: https://issues.apache.org/jira/browse/PROTON-2435
>             Project: Qpid Proton
>          Issue Type: Bug
>          Components: build, proton-c
>    Affects Versions: proton-c-0.35.0
>            Reporter: Jiri Daněk
>            Priority: Major
>         Attachments: Dockerfile
>
>
> When building Qpid Proton on CentOS 7 in Docker, using  [^Dockerfile] 
> {noformat}
> Step 8/9 : RUN cmake .. -GNinja -DCMAKE_INSTALL_PREFIX=/root/Work/qpid-install
>  ---> Running in 290c464d8c69
> -- The C compiler identification is GNU 4.8.5
> -- Check for working C compiler using: Ninja
> -- Check for working C compiler using: Ninja -- works
> -- Detecting C compiler ABI info
> -- Detecting C compiler ABI info - done
> -- Found OpenSSL: /usr/lib64/libssl.so;/usr/lib64/libcrypto.so (found version "1.0.2k") 
> -- Looking for include file pthread.h
> -- Looking for include file pthread.h - found
> -- Looking for pthread_create
> -- Looking for pthread_create - not found
> -- Looking for pthread_create in pthreads
> -- Looking for pthread_create in pthreads - not found
> -- Looking for pthread_create in pthread
> -- Looking for pthread_create in pthread - found
> -- Found Threads: TRUE  
> -- Could NOT find SWIG (missing:  SWIG_EXECUTABLE SWIG_DIR) 
> -- Found PkgConfig: /usr/bin/pkg-config (found version "0.27.1") 
> -- Found CyrusSASL: /usr/lib64/libsasl2.so (found version "2.1.26") 
> -- Found PythonInterp: /usr/bin/python3.6 (found suitable version "3.6.8", minimum required is "3.6") 
> -- Found PythonLibs: /usr/lib64/libpython3.6m.so (found suitable exact version "3.6.8") 
> -- Looking for a CXX compiler
> -- Looking for a CXX compiler - /usr/bin/c++
> -- The CXX compiler identification is GNU 4.8.5
> -- Check for working CXX compiler using: Ninja
> -- Check for working CXX compiler using: Ninja -- works
> -- Detecting CXX compiler ABI info
> -- Detecting CXX compiler ABI info - done
> -- Build type is "RelWithDebInfo" (has debug symbols)
> -- PN_VERSION: 0.36.0 (SNAPSHOT)
> -- Looking for clock_gettime
> -- Looking for clock_gettime - found
> -- Looking for strerror_r
> -- Looking for strerror_r - found
> -- Looking for epoll_wait
> -- Looking for epoll_wait - found
> -- Building the epoll proactor
> -- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
> -- Could NOT find JsonCpp (missing:  JsonCpp_LIBRARY JsonCpp_INCLUDE_DIR) 
> -- Could NOT find Doxygen (missing:  DOXYGEN_EXECUTABLE) 
> -- Configuring done
> -- Generating done
> -- Build files have been written to: /qpid-proton/build
> Removing intermediate container 290c464d8c69
>  ---> 6832cb8c68ac
> Step 9/9 : RUN ninja install
>  ---> Running in 4dc6c077dce0
> ninja: error: '-lpthread', needed by 'c/libqpid-proton.so.11.14.0', missing and no known rule to make it
> {noformat}
> I suspect this is because {{-lpthread}} is not an actual library on disk, but simply an alias for {{-pthread}} gcc switch. Older CMake cannot be told to prefer the switch variant, and it tries the library first, which succeeds for the purposes of the CMake project config check.
> C.f. {{THREADS_PREFER_PTHREAD_FLAG}}, from https://cmake.org/cmake/help/v3.1/module/FindThreads.html
> Workaround is to build project with {{make}}.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org