未定义的引号符号'pthread_create @@ GLIBC_2.2.5'

时间:2015-12-07 21:10:05

标签: c++ compiler-errors makefile ubuntu-15.04

我刚刚拉了一个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

我的朋友拉了同一个分支,他没有任何问题地运行它。

你能否给我一些关于修复的提示?详细的答案将受到高度赞赏。

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目录添加到库目录中。