未定义对 azure 存储中符号 'pthread_rwlock_wrlock@@GLIBC_2.2.5' 的引用 c++ sdk 编译
undefined reference to symbol 'pthread_rwlock_wrlock@@GLIBC_2.2.5' in azure storage c++ sdk compilation
我正在尝试在 Fedora 22 上编译 Azure 存储 c++ SDK。我使用的是 gcc 版本 5.1.1-1。当我使用以下命令编译测试应用程序时:
$> CASABLANCA_DIR=/source/codebox/azure/cpprestsdk/ CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=on
$> make
它产生以下错误消息:
/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
我可以在 /usr/lib64 目录中看到 libpthread.so.0 库。我还需要安装哪个库?
将正确的 find_package
调用添加到您的 CMakeLists.txt
:
find_package(Threads)
然后,link目标图书馆:
target_link_libraries(my_target ${CMAKE_THREAD_LIBS_INIT})
就是这样。您可能忘记了 target_link_libraries
.
通常(CMake 和 Azure 存储 SDK 之外),此错误表明您需要 link 和 -lpthread
。 (对于 gcc,您可能需要 -pthread
。)
我正在尝试在 Fedora 22 上编译 Azure 存储 c++ SDK。我使用的是 gcc 版本 5.1.1-1。当我使用以下命令编译测试应用程序时:
$> CASABLANCA_DIR=/source/codebox/azure/cpprestsdk/ CXX=g++ cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=on
$> make
它产生以下错误消息:
/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
我可以在 /usr/lib64 目录中看到 libpthread.so.0 库。我还需要安装哪个库?
将正确的 find_package
调用添加到您的 CMakeLists.txt
:
find_package(Threads)
然后,link目标图书馆:
target_link_libraries(my_target ${CMAKE_THREAD_LIBS_INIT})
就是这样。您可能忘记了 target_link_libraries
.
通常(CMake 和 Azure 存储 SDK 之外),此错误表明您需要 link 和 -lpthread
。 (对于 gcc,您可能需要 -pthread
。)