Makefile fglut/libfglut.a(freeglut_state.o):对符号'的未定义引用;XGetWindowAttributes'; 我正在用make编译C++程序,这是我得到的错误。
/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): 这告诉我您可以静态链接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_
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:你能更详细地解释一下如何为初学者做到这一点吗!