首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GLVis:链接器错误“对符号‘XGetWindowAttributs’的未定义引用”

GLVis:链接器错误“对符号‘XGetWindowAttributs’的未定义引用”
EN

Ask Ubuntu用户
提问于 2018-05-11 19:57:56
回答 1查看 1.4K关注 0票数 4

我正在尝试安装GLVis,它有一个长长的依赖项列表(请参阅文章的末尾),所有这些都是我通过apt-get或手动编译安装的。然而,当我试图制作GLVis时,我得到了一个链接器错误。特别是对符号‘XGetWindowAttributes’的未定义引用:

代码语言:javascript
复制
stan@ubuntu:~/Downloads/glvis-3.1$ make
g++ -O3 -I../mfem-3.3.2 -DGLVIS_MULTISAMPLE=4 -DGLVIS_MS_LINEWIDTH=1.4 -I/usr/include -DGLVIS_USE_LIBPNG -DGLVIS_USE_FREETYPE -I/usr/include/freetype2 -o glvis glvis.cpp -Llib -lglvis -L../mfem-3.3.2 -lmfem -lrt -L -lX11 -lGL -lGLU -lpng -lfreetype -lfontconfig -lpthread
/usr/bin/x86_64-linux-gnu-ld: lib/libglvis.a(aux_vis.o): undefined reference to symbol 'XGetWindowAttributes'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
makefile:187: recipe for target 'glvis' failed
make: *** [glvis] Error 1

make没有返回任何其他错误,因此我假设我不会错过提供任何所需的库。经过相当多的清理和重新安装软件包后,我选择了请求您的帮助,因为我甚至不知道错误是否在我这一边。我对Ubuntu和X11的内部结构知之甚少,我非常感谢您的帮助。

我怎样才能解决这个问题?这个特别的错误已经出现在我无法联系到的其他人身上,并且尝试他们的解决方案,如果适用的话,我什么也找不到。

我在使用Ubuntu18.04 64位的虚拟机上。

安装GLVis状态的说明:

GLVis是一个X11应用程序,可以在Linux/Unix系统(包括Mac )上使用X11/XQuarz应用程序构建,在Windows下使用Cygwin/X构建,GLVis依赖于以下外部包:

  • MFEM库(使用最新版本)加上MFEM所构建的任何依赖于mfem.org的库
  • X11,GL和GLU库x.org,opengl.org,mesa3d.org
  • libpng或libtiff库;用于截图(可选) libpng.org,libtiff.org
  • FreeType 2和Fontconfig库;用于字体呈现(可选) freetype.org、fontconfig.org

有两个构建系统,一个基于GNU,另一个基于CMake,如下所述。选择与用于构建MFEM的生成系统相匹配的一个。

EN

回答 1

Ask Ubuntu用户

回答已采纳

发布于 2018-05-16 20:33:55

问题在于Ubuntu18.04LTS中不再使用的一个旧环境变量,称为$X11_LIB_DIR。这不会对任何内容进行评估,并且在使用-L时会破坏mpicc编译器。

见下文:

代码语言:javascript
复制
mpicxx -O3 -I../mfem -I../mfem/../hypre-2.10.0b/src/hypre/include -DGLVIS_MULTISAMPLE=4 -DGLVIS_MS_LINEWIDTH=1.4 -I/usr/include -DGLVIS_USE_LIBPNG -DGLVIS_USE_FREETYPE -I/usr/include/freetype2 -o glvis glvis.cpp -Llib -lglvis -L../mfem -lmfem -L../mfem/../hypre-2.10.0b/src/hypre/lib -lHYPRE -L../mfem/../metis-4.0 -lmetis -lrt -L -lX11 -lGL -lGLU -lpng -lfreetype -lfontconfig -lpthread

注意到"-L“之前的随机"-lX11”吗?

应该是这样:

代码语言:javascript
复制
mpicxx -O3 -I../mfem -I../mfem/../hypre-2.10.0b/src/hypre/include -DGLVIS_MULTISAMPLE=4 -DGLVIS_MS_LINEWIDTH=1.4 -I/usr/include -DGLVIS_USE_LIBPNG -DGLVIS_USE_FREETYPE -I/usr/include/freetype2 -o glvis glvis.cpp -Llib -lglvis -L../mfem -lmfem -L../mfem/../hypre-2.10.0b/src/hypre/lib -lHYPRE -L../mfem/../metis-4.0 -lmetis -lrt -lX11 -lGL -lGLU -lpng -lfreetype -lfontconfig -lpthread

因此,要解决这个问题,请将makefile中的第121号行改为:

代码语言:javascript
复制
GL_LIBS = -lX11 -lGL -lGLU
票数 3
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1035062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档