Makefile fglut/libfglut.a(freeglut_state.o):对符号'的未定义引用;XGetWindowAttributes'; 我正在用make编译C++程序,这是我得到的错误。

Makefile fglut/libfglut.a(freeglut_state.o):对符号'的未定义引用;XGetWindowAttributes'; 我正在用make编译C++程序,这是我得到的错误。,makefile,compilation,Makefile,Compilation,/usr/bin/ld:fglut/libfglut.a(freeglut_state.o):对符号“XGetWindowAttributes”的未定义引用 //usr/lib/i386 linux gnu/libX11.so.6:添加符号时出错:命令行中缺少DSO collect2:错误:ld返回了1个退出状态 Makefile:55:目标“变形线”的配方失败 make:**[morphlines]错误1 我是初学者 /usr/bin/ld:fglut/libfglut.a(freeglut_

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

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

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

Makefile:55:目标“变形线”的配方失败

make:**[morphlines]错误1

我是初学者

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

这告诉我您可以静态链接
libfglut
*。a
只是对象文件的存档)。执行此操作时,还必须链接所有依赖项,因为静态库中的对象文件实际上已编译到程序中,因此程序将依赖于它们

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

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

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

这告诉我您可以静态链接
libfglut
*。a
只是对象文件的存档)。执行此操作时,还必须链接所有依赖项,因为静态库中的对象文件实际上已编译到程序中,因此程序将依赖于它们

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


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

@user2371524:您能否更详细地解释一下如何为初学者做到这一点@用户2371524:你能更详细地解释一下如何为初学者做到这一点吗!