Uploaded image for project: 'Qpid Proton'
  1. Qpid Proton
  2. PROTON-2435

ninja: error: '-lpthread', needed by 'c/libqpid-proton.so.11.14.0', missing and no known rule to make it

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • proton-c-0.35.0
    • None
    • build, proton-c
    • None

    Description

      When building Qpid Proton on CentOS 7 in Docker, using Dockerfile

      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
      

      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.

      Attachments

        1. Dockerfile
          0.4 kB
          Jiri Daněk

        Issue Links

          Activity

            People

              Unassigned Unassigned
              jdanek Jiri Daněk
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated: