Reputation: 998
I am trying to compile Azure storage c++ SDK on Fedora 22. I am using gcc version 5.1.1-1. When I compile test application using following command:
$> CASABLANCA_DIR=/source/codebox/azure/cpprestsdk/ CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=on
$> make
It produces following error message:
/usr/bin/ld: CMakeFiles/azurestoragetest.dir/main.cpp.o: undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5'
/usr/lib64/libpthread.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
tests/CMakeFiles/azurestoragetest.dir/build.make:879: recipe for target 'Binaries/azurestoragetest' failed
make[2]: *** [Binaries/azurestoragetest] Error 1
CMakeFiles/Makefile2:125: recipe for target 'tests/CMakeFiles/azurestoragetest.dir/all' failed
make[1]: *** [tests/CMakeFiles/azurestoragetest.dir/all] Error 2
Makefile:126: recipe for target 'all' failed
make: *** [all] Error 2
I can see libpthread.so.0 library in /usr/lib64 directory. Which other library I need to install?
Upvotes: 3
Views: 5225
Reputation: 2959
In general (outside of CMake and Azure Storage SDK), this error indicates you need to link with -lpthread
. (With gcc you likely want -pthread
.)
Upvotes: 1
Reputation: 50550
Add the right find_package
invokation to your CMakeLists.txt
:
find_package(Threads)
Then, link the library to your target:
target_link_libraries(my_target ${CMAKE_THREAD_LIBS_INIT})
That's all. Likely you forgot the target_link_libraries
.
Upvotes: 6