Компиляция сетки на Centos EL7

У меня проблемы с компиляцией meshlab-2016.12 на Centos.EL7.
Я получил некоторые пути.
Обновлен QT до Qt-5.9.1, поскольку последней версией на Centos является Qt 5.6.1, которую я ранее установил

sudo yum install qt5-qtbase
sudo yum install qt5-qtx11extras
sudo yum install qt5-qtbase-devel

Однако, по крайней мере, Qt5.7 необходим для meshlab

Затем установите эти env. переменные

setenv QTDIR /usr/local/Qt-5.9.1
setenv QTINC /usr/local/Qt-5.9.1/include
setenv QTLIB /usr/local/Qt-5.9.1/lib 
setenv PATH /usr/local/Qt-5.9.1/bin:$PATH
setenv PATH /usr/local/bin:/usr/local/Qt-5.9.1/bin:$PATH

Затем следуйте инструкциям на тестовом компьютере, устанавливая в /opt/TESTING

  1. Установил vcglib в /opt/TESTING

  2. скачал meshlab-2016.12 в /opt/TESTING и распаковал его там

  3. Побежал следующий

    qmake -project

(Это подбирает правильную версию QT)

qmake src/external/external.pro

(Сделать внешние библиотеки - в том числе jhead-2.95

gmake
gmake install

(Сделать внешние библиотеки - в том числе jhead-2.95)

qmake src/meshlab_mini.pro

(Для сборки meshlab с минимальным набором плагинов)

Здесь это терпит неудачу, как показано ниже;

../../vcglib/vcg/complex/algorithms/clean.h:1789:0: 
warning: ignoring #pragma omp parallel [-Wunknown-pragmas]

pragma omp parallel for schedule(dynamic, 10)

g++ -Wl,-O1 -Wl,-z,origin -Wl,-rpath,\$ORIGIN/../distrib -Wl,-rpath,
/usr/local/Qt-5.9.1/lib -o ../distrib/meshlab main.o mainwindow_Init.o 
mainwindow_RunTime.o glarea.o multiViewer_Container.o plugindialog.o 
customDialog.o filterScriptDialog.o saveSnapshotDialog.o layerDialog.o 
savemaskexporter.o changetexturename.o stdpardialog.o ml_std_par_dialog.o 
xmlstdpardialog.o additionalgui.o xmlgeneratorgui.o ml_render_gui.o 
ml_rendering_actions.o ml_default_decorators.o ml_selection_buffers.o
trackball.o trackmode.o coordinateframe.o glarea_setting.o filterthread.o
qrc_meshlab.o moc_interfaces.o moc_mainwindow.o moc_glarea.o
moc_multiViewer_Container.o moc_plugindialog.o moc_customDialog.o 
moc_filterScriptDialog.o moc_saveSnapshotDialog.o moc_savemaskexporter.o 
moc_changetexturename.o moc_layerDialog.o moc_stdpardialog.o 
moc_ml_std_par_dialog.o moc_xmlstdpardialog.o moc_additionalgui.o 
moc_xmlgeneratorgui.o moc_ml_render_gui.o moc_ml_rendering_actions.o 
moc_filterthread.o   -L../external/lib/linux-g++ -ljhead -L../distrib 
-lcommon -lGLU -L/usr/local/Qt-5.9.1/lib -lQt5OpenGL -lQt5Widgets -lQt5Gui 
-lQt5Xml -lQt5XmlPatterns -lQt5Network -lQt5Script -lQt5Core -lGL -lpthread 
/bin/ld: cannot find -ljhead
collect2: error: ld returned 1 exit status
gmake[1]: *** [../distrib/meshlab] Error 1    
gmake[1]: Leaving directory `/opt/TESTING/meshlab-2016.12/meshlab'    
gmake: *** [sub-meshlab-make_first-ordered] Error 2

Так что он говорит, что я не могу найти дерьмо. Другие части компиляции, кажется, находят его, хотя, например,

-I../src/external/glew-1.7.0/include -I../src/external/jhead-2.95 

Смотря на ld

/bin/ld -V
GNU ld version 2.25.1-22.base.el7 
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   i386linux
   elf_l1om
   elf_k1om

а также /

usr/bin/ld -V
GNU ld version 2.25.1-22.base.el7 
  Supported emulations:
   elf_x86_64
   elf32_x86_64
   elf_i386
   i386linux
   elf_l1om
   elf_k1om

Любой совет был бы полезен в этом пункте. Надеюсь, я что-то пропустил

Обновленный: Попробовал обходной путь от Уильяма Брауна ниже, который дал некоторый прогресс. Не удалось на более позднем этапе

gmake[1]: Leaving directory `/opt/src/meshlab/meshlabplugins/filter_layer'
cd meshlabplugins/filter_measure/ && ( test -e Makefile || /opt/bin/Qt5.7.1/5.7/gcc_64/bin/qmake 
/opt/src/meshlab/src/meshlabplugins/filter_measure/filter_measure.pro -o Makefile ) && gmake -f Makefile 
gmake[1]: Entering directory `/opt/src/meshlab/meshlabplugins/filter_measure'
gmake[1]: *** No rule to make target `filter_measure.xml', needed by `../../distrib/plugins/libfilter_measure.so'.  Stop.
gmake[1]: Leaving directory `/opt/src/meshlab/meshlabplugins/filter_measure'
gmake: *** [sub-meshlabplugins-filter_measure-make_first-ordered] Error 2

1 ответ

Мне удалось преодолеть эту проблему на Centos 7 (7.3.1611).

Кажется, есть 2 проблемы, и я не утверждаю, что это правильное решение, просто обходной путь.

После распаковки tar-файла я cd на верхний уровень (я распаковал /local/meshlab). Затем я создаю ссылку:

# ln -s ./src/external eternal

Причина в том, что -L в невыполненном утверждении, кажется, указывает на внешнюю папку на этом верхнем уровне, а не в ./src,

Сделав это, я могу без проблем собрать external.pro, и все выходные файлы.a /local/meshlab/lib/linux-g++, Без ссылки они находились глубоко во временной папке сборки.

Однако -L не выглядит там, он выглядит в /local/meshlab/src/external/lib/linux-g++/, где уже есть некоторые предварительно отправленные.a файлы. Поэтому я копирую туда файлы.a:

# cp /local/meshlab/lib/linux-g++/*.a /local/meshlab/src/external/lib/linux-g++/

Теперь, когда я использую:

# qmake src/meshlab_mini.pro
# gmake

Он работает и создает исполняемый двоичный файл meshlab в /local/meshlab/distrib,

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