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”的引用的主要内容,如果未能解决你的问题,请参考以下文章