GLVis: Ошибка компоновщика «неопределенная ссылка на символ« XGetWindowAttributs »»

Я пытаюсь установить GLVis с длинным списком зависимостей (см. Конец поста), все из которых я установил, либо с помощью apt-get, либо с помощью ручной компиляции. Тем не менее, я получаю ошибку компоновщика при попытке сделать GLVis. В частности, неопределенная ссылка на символ ' XGetWindowAttributes ':

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, и я буду очень признателен за вашу помощь.

Как я мог попытаться решить эту проблему? Эта конкретная ошибка появилась для других людей в тех контекстах, к которым я не могу относиться, и попытка их решения, если применимо, никуда меня не привела.

Я работаю на виртуальной машине с Ubuntu 18.04 64bit.


Инструкции по установке состояния GLVis:

GLVis является приложением X11 и может быть построено на системах Linux / Unix, включая Mac OS X, с использованием приложения X11 / XQuarz и под Windows с использованием Cygwin / X.

Помимо компилятора C ++, 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 make и одна на основе CMake, как описано ниже. Выберите тот, который соответствует системе сборки, которую вы использовали для сборки MFEM.

3
задан 17 May 2018 в 01:26

1 ответ

Проблема заключается в старой переменной среды, которая больше не используется в Ubuntu 18.04 LTS, названный $X11_LIB_DIR. Это не оценивает ни к чему и повреждает mpicc компилятор, когда-L используется.

Посмотрите ниже:

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"?

Это должно быть это:

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

Так, для фиксации этого измените строку № 121 в make-файле для чтения:

GL_LIBS = -lX11 -lGL -lGLU
2
ответ дан 1 December 2019 в 16:52

Другие вопросы по тегам:

Похожие вопросы: