Установка Octave-4.0.0 на CentOS приводит к ошибке связывания QtOpenGL

я пытаюсь установить Octave-4.0.0 на кластер CentOS 6. Octave имеет 20 + зависимостей, и неясно, какие версии каждой зависимости использовать. Поскольку yum только Октава-3.4.3, я установил Октава-3.4.3 от yum С надеждой, что это даст мне большинство зависимостей. Мне также пришлось установить (через yum)

arpack-devel-3.1.3-1.el6.x86_64
fltk-devel-1.1.10-1.el6.x86_64
gl2ps-devel-1.3.5-1.el6.x86_64
glpk-devel-4.40-1.1.el6.x86_64
qhull-devel-2003.1-14.el6.x86_64
qrupdate-devel-1.1.2-1.el6.x86_64
qscintilla-devel-2.4-1.el6.x86_64
suitesparse-devel-3.4.0-9.el6.x86_64

и из источника

pcre-8.36

я запускаю Auto config:

./configure JAVA_HOME="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.79.x86_64/"  CPPFLAGS="-I/home/path/to/user/local/include"  --prefix=/home/path/to/user/local/  --with-blas=/usr/lib64/atlas/libf77blas.so.3 --with-lapack=/usr/lib64/atlas/liblapack.so.3

кажется чтобы найти вещи хорошо, а затем, когда я бегу make это занимает около 30 минут, чтобы скомпилировать, а затем терпит неудачу с :

.
.
.
make[2]: Entering directory /gpfs0/home/path/to/user/local/src/octave-4.0.0/src'
CXX      octave_gui-main-gui.o
CXXLD    octave-gui
/usr/lib64/libQtOpenGL.so.4: undefined reference to 'QWidgetPrivate::checkWindowRole()'`
/usr/lib64/libQtOpenGL.so.4: undefined reference to 'QPaintEngineEx::drawPixmaps(QDrawPixmaps::Data const*, int, QPixmap const&, QFlags<QDrawPixmaps::DrawingHint>)'
/usr/lib64/libQtOpenGL.so.4: undefined reference to 'QTextureGlyphCache::populate(QTextItemInt const&, QVarLengthArray<unsigned int, 256> const&, QVarLengthArray<QFixedPoint, 256> const&)'
/usr/lib64/libQtNetwork.so.4: undefined reference to 'QObjectPrivate::checkWindowRole()'
collect2: error: ld returned 1 exit status
make[2]: *** [octave-gui] Error 1
make[2]: Leaving directory '/gpfs0/home/path/to/user/local/src/octave-4.0.0/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/gpfs0/home/path/to/user/local/src/octave-4.0.0'
make: *** [all] Error 2

в файле Makefile, сгенерированном auto conf, кажется, что он должен корректно связываться с библиотеками Qt, т. е.

.
.
.
QT_CFLAGS = -DQT_SHARED -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtNetwork -I/usr/include/Q     tOpenGL
QT_CPPFLAGS = -I/usr/include/QtCore -I/usr/include/QtGui -I/usr/include/QtNetwork -I/usr/include/QtOpenGL
QT_LDFLAGS =
QT_LIBS = -lQtNetwork -lQtOpenGL -lQtGui -lQtCore   -lqscintilla2
.
.
.

в /usr/ lib64 / я проверил содержимое библиотек Qt

$ for i in *Qt*.so.4.6.2; do echo $i; nm -C -D $i | grep -i checkWindowRole; done
libQt3Support.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
                 U QWidgetPrivate::checkWindowRole()
libQtAssistantClient.so.4.6.2
libQtCLucene.so.4.6.2
libQtCore.so.4.6.2
00000000001657b0 T QObjectPrivate::checkWindowRole()
libQtDBus.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
libQtDesignerComponents.so.4.6.2
libQtDesigner.so.4.6.2
libQtGui.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
00000000002388f0 T QWidgetPrivate::checkWindowRole()
libQtHelp.so.4.6.2
libQtMultimedia.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
libQtNetwork.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
libQtOpenGL.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
                 U QWidgetPrivate::checkWindowRole()
libQtScript.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
libQtScriptTools.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
                 U QWidgetPrivate::checkWindowRole()
libQtSql.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
libQtSvg.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
                 U QWidgetPrivate::checkWindowRole()
libQtTest.so.4.6.2
libQtXmlPatterns.so.4.6.2
                 U QObjectPrivate::checkWindowRole()
libQtXml.so.4.6.2

и оказывается, что QWidgetPrivate::checkWindowRole() объявляется (если я интерпретирую nm правильно?) в пределах libQtGui.so.4.6.2. Эта библиотека уже ссылка на (см. выше)

вопрос: Как исправить эту проблему и получить libQtOpenGL чтобы увидеть правильные библиотеки?

12
задан irritable_phd_syndrom
09.02.2023 7:41 Количество просмотров материала 3413
Распечатать страницу

1 ответ

оказывается, у меня есть часть программного обеспечения, которое я установил локально на моем пользовательском пространстве, и он установил некоторые библиотеки в ~/local/lib. В этом каталоге было установлено программное обеспечение libQtCore.so.4 и libQtGui.so.4. Это были только связанные установить Qt библиотеки здесь. Точно так же я поставил

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/path/to/user/local/lib

это означало, что компоновщик нашел эти библиотеки раньше, чем библиотеки, расположенные в /usr/lib64. Изменение $LD_LIBRARY_PATH, чтобы он больше не указывал на ~/local/lib, пусть компоновщик работа и решила мою проблему.

0
отвечен irritable_phd_syndrom 2023-02-10 15:29

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх