2017-08-11 11 views
0

J'ai du mal à compiler meshlab-2016.12 sur Centos.EL7.
J'ai un peu de chemin.
Mise à jour de l'intervalle QT à Qt 5.9.1 comme le dernier sur CentOS est la version Qt 5.6.1 - que j'avais déjà installéCompilation de meshlab sur Centos EL7

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

Cependant au moins Qt5.7 est nécessaire pour MeshLab

Ensuite paramétrés env. les variables

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 

ensuite suivi les instructions sur une machine de test, l'installation dans/opt/TEST

  1. vcglib installé dans/opt/TEST

  2. téléchargé MeshLab-2016,12 dans/opt/TEST et déballé il

  3. Ran ce qui suit

    qmake -project

(Cette reprend la version correcte de l'intervalle QT)

qmake src/external/external.pro 

(Pour les bibliothèques externes - y compris jhead-2,95

gmake 
gmake install 

(Pour les bibliothèques externes - y compris jhead-2.95)

qmake src/meshlab_mini.pro 

(Pour construire un méshlab avec un ensemble minimal de plugins)

C'est là qu'il échoue, comme ci-dessous;

../../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 

Donc, il dit que ld ne peut pas trouver ljhead. D'autres parties de la compilation ne semblent le trouver par exemple si

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

regardant 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 

et /

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 

Tout conseil serait utile à ce stade. Espérons que j'ai juste raté quelque chose

Mis à jour: Solution de contournement de William Brown ci-dessous, qui a donné quelques progrès. Échec au point suivant

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 

Répondre

0

J'ai réussi à résoudre ce problème sur Centos 7 (7.3.1611).

Il semble y avoir 2 problèmes, et je ne prétends pas que c'est la bonne solution, juste une solution de rechange.Après le déballage du fichier tar I cd au niveau supérieur (je l'ai déballé à /local/meshlab). Je crée alors un lien:

# ln -s ./src/external eternal 

La raison étant que l'-L dans la déclaration qui ne semble être pointé vers un dossier externe à ce haut niveau, pas ./src. Après avoir fait cela, je peux créer external.pro sans aucun problème, et les fichiers .a de sortie vont tous dans /local/meshlab/lib/linux-g++. Sans le lien, ils étaient au fond d'un dossier de construction temporaire.

Cependant le -L ne regarde pas là, il regarde dans /local/meshlab/src/external/lib/linux-g++/, où il y a déjà quelques fichiers .a pré-embarqués. Donc, je copie les fichiers .a y:

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

Maintenant, quand je l'utilise:

# qmake src/meshlab_mini.pro 
# gmake 

Il travaille et construit un binaire Runnable MeshLab dans /local/meshlab/distrib.

+0

Merci William. Cela m'a débarrassé des erreurs que j'ai rapportées. Malheureusement, il en a généré un autre (j'essaie de construire le meshlab_full.pro 'gmake [1]: *** Aucune règle pour rendre la cible' filter_measure.xml ', requise par '../../distrib/plugins /libfilter_measure.so '. Stop. » Progrès cependant !! –