我刚刚拉了一个git存储库,我和我的朋友正在开发一个应用程序。当我正在运行 make 时,我遇到了这个错误:
对符号'pthread_create @@ GLIBC_2.2.5'的未定义引用 /lib/x86_64-linux-gnu/libpthread.so.0:错误添加符号:DSO 从命令行中丢失了collect2:错误:ld返回1退出状态 Makefile:182:目标'bin / release / ns'的配方失败make [1]: * [bin / release / ns]错误1 Makefile:133:目标'发布'的配方 失败了:* [发布]错误2
我的朋友拉了同一个分支,他没有任何问题地运行它。
你能否给我一些关于修复的提示?详细的答案将受到高度赞赏。
答案 0 :(得分:11)
我一直在开发多平台游戏引擎,但仅在Linux上遇到相同的问题。如果您使用的是cmake,请在cmake文件中添加以下内容:
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
如果您不使用cmake,则需要为编译器手动添加此标志。
在Linux系统中使用线程的完整命令必须包含以下命令:
set(CMAKE_THREAD_LIBS_INIT "-lpthread")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
set(CMAKE_HAVE_THREADS_LIBRARY 1)
set(CMAKE_USE_WIN32_THREADS_INIT 0)
set(CMAKE_USE_PTHREADS_INIT 1)
set(THREADS_PREFER_PTHREAD_FLAG ON)
注意:此修补程序也适用于Mac-O,但有一个区别。您不需要将-pthread作为编译器标志
答案 1 :(得分:-1)
你应该添加" -lpthread"到你的图书馆。当然,您还应该将libpthread目录添加到库目录中。