fglut/libfglut.a(freeglut_state.o):未定义对符号“XGetWindowAttributes”的引用

Posted

技术标签:

【中文标题】fglut/libfglut.a(freeglut_state.o):未定义对符号“XGetWindowAttributes”的引用【英文标题】:fglut/libfglut.a(freeglut_state.o): undefined reference to symbol 'XGetWindowAttributes' 【发布时间】:2017-11-21 21:35:49 【问题描述】:

我正在使用 make 编译一个 C++ 程序,这是我遇到的错误。

/usr/bin/ld: fglut/libfglut.a(freeglut_state.o): undefined reference to symbol 'XGetWindowAttributes'

//usr/lib/i386-linux-gnu/libX11.so.6:添加符号时出错:命令行中缺少 DSO

collect2: 错误:ld 返回 1 个退出状态

Makefile:55:目标“morphlines”的配方失败

make: *** [morphlines] 错误 1

我是初学者

【问题讨论】:

【参考方案1】:

/usr/bin/ld: fglut/libfglut.a(freeglut_state.o):

这告诉我你链接libfglut 静态*.a 只是目标文件的存档)。当您这样做时,您必须链接所有依赖项,因为静态库中的目标文件实际编译到您的程序中,您的程序将依赖它们。

动态链接libfglut(这是GNU工具链的默认设置),因此您的程序将依赖libfglut.so,而libfglut.so本身将依赖libX11.so——或者添加-lX11之后 -lfglut 在最后一个链接步骤的命令行上。您可能需要在 -lX11 之前使用 -Wl,-Bdynamic 才能将链接器切换回动态链接。

如果这不能直接解决您的问题,我建议您编辑您的问题以包含您正在使用的Makefile 的相关部分。

【讨论】:

@user2371524 : 你能更详细地解释一下如何为初学者做这件事!

以上是关于fglut/libfglut.a(freeglut_state.o):未定义对符号“XGetWindowAttributes”的引用的主要内容,如果未能解决你的问题,请参考以下文章

freeglut.dll 丢失

freeglut 键盘问题

在没有 IDE 的情况下使用 freeglut

freeglut-2.0.1

windows上编译freeglut库

如何检测与 C++、OpenGL 和 freeglut 的冲突?