我正在使用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:目标' morphlines的配方'失败
make:*** [morphlines]错误1
我是初学者
答案 0 :(得分:2)
/ usr / bin / ld:fglut / libfglut.a(freeglut_state.o):
这告诉我您静态链接libfglut
(*.a
只是目标文件的存档)。执行此操作时,必须链接所有依赖项,因为实际编译到程序中的静态库中的目标文件将依赖于它们。
动态链接libfglut
(这是GNU工具链的默认设置),因此您的程序将依赖libfglut.so
,而libX11.so
本身依赖于-lX11
- 或者添加{{1在最后一个链接步骤的命令行上 -lfglut
之后的。在-Wl,-Bdynamic
之前,您可能需要-lX11
才能将链接器切换回动态链接。
如果这不能直接解决您的问题,建议您修改问题以包含您正在使用的Makefile
的相关部分。