在Ubuntu上有libpthread.so链接问题

在Ubuntu上有libpthread.so链接问题,ubuntu,makefile,undefined,glfw,Ubuntu,Makefile,Undefined,Glfw,我已经从这个网站下载了源代码 此项目有一些依赖项: 库:FTGL(用于字体)、FreeType2(FTGL需要)、GLFW(用于windows和键盘输入)、OpenGL。 软件:CMake(如果它没有构建),但我有一个问题 安装指南如下所示 要构建和运行: 我正在努力建造它 $ cmake . 很好,但是当我想 $ make 我得到这个错误: Linking CXX executable conv /usr/bin/ld: /usr/local/lib/libglfw.a(x11_ini

我已经从这个网站下载了源代码

此项目有一些依赖项:

库:FTGL(用于字体)、FreeType2(FTGL需要)、GLFW(用于windows和键盘输入)、OpenGL。 软件:CMake(如果它没有构建),但我有一个问题

安装指南如下所示

要构建和运行:

我正在努力建造它

$ cmake .  
很好,但是当我想

$ make
我得到这个错误:

Linking CXX executable conv
/usr/bin/ld: /usr/local/lib/libglfw.a(x11_init.o): undefined reference to symbol 'pthread_kill@@GLIBC_2.0'
/usr/bin/ld: note: 'pthread_kill@@GLIBC_2.0' is defined in DSO /lib/i386-linux-gnu/libpthread.so.0 so try adding it to the linker command line
/lib/i386-linux-gnu/libpthread.so.0: could not read symbols: Invalid operation
collect2: ld returned 1 exit status
make[2]: *** [conv] Error 1
make[1]: *** [CMakeFiles/conv.dir/all] Error 2
make: *** [all] Error 2
我在谷歌上搜索了这个问题,并试图通过更改

SET(CMAKE_BUILD_TYPE distribution)
SET(CMAKE_CXX_FLAGS_DISTRIBUTION "-O3")

但一切都没有改变。 我几乎在谷歌上搜索了几个小时,但我不能真正解决这个问题,我仍然有同样的错误。 顺便说一下

TARGET_LINK_LIBRARIES(conv Xrandr pthread ftgl glfw ${OPENGL_LIBRARIES})
我想,我不需要改变这个字符串中的任何内容


另外,如果这意味着什么的话,我正在使用Ubuntu11.10:)

将-L设置为文件基名不会解决任何问题。如果有的话,您应该设置:

SET(CMAKE_CXX_FLAGS_DISTRIBUTION "-O3 -L/usr/lib/i386-linux-gnu/")

以包括多拱形库目录。但是,如果您有Ubuntu附带的最新版本的编译器,编译器应该自己完成这项工作。

TARGET\u LINK\u LIBRARIES
命令中,移动
pthread
,因此它是最后一项。GNU链接器要求依赖库位于依赖库之前


您不必像当前在
CMAKE\u CXX\u FLAGS\u发行版中那样指定pthread库的任何绝对路径,这样做会限制项目的可移植性。

您需要链接到X11和pthread,我以前在glfw中遇到过这个问题。

-lX11-lpthread

尝试在包含pthread的情况下重新配置,如下所示:

$ CFLAGS='-lpthread' ./configure

在黑暗中,尝试
TARGET_LINK_库(conv-Xrandr-pthread-ftgl-glfw${OPENGL_库}-pthread)
经过几个小时的努力,我需要用它在Ubuntu 13.04上安装Barnyard2。让我们希望谷歌能为其他有问题的人找到这条评论。
SET(CMAKE_CXX_FLAGS_DISTRIBUTION "-O3 -L/usr/lib/i386-linux-gnu/")
$ CFLAGS='-lpthread' ./configure