Question ROOT-installation avec cmake réussit mais n'est pas utilisable


Je travaille actuellement avec Ubuntu 16.04.3 LTS. Vous devez savoir que je suis parfaitement au courant de tous les environnements Linux, veuillez excuser mon manque de détails s'il y en a.

Je dois travailler avec la bibliothèque ROOT pour C ++, développée par le CERN. Installation avec sudo make install a échoué, et j'ai dû l'installer via cmake.

Lorsque je lance un terminal et que je saisis root, ça semble fonctionner, afficher toutes les informations correctement.

Cependant, lors de l'utilisation de ce qui suit makefile (inclus à la fin du post), je reçois un rapport d'erreur vraiment étendu qui commence par:

g++ -Wall -c -o Precision_DiffFinie.o -I`~/root-6.12.04/builddir/bin/root-config --incdir`  Precision_DiffFinie.cpp 
 In file included from /home/benjamin/root-6.12.04/builddir/include/RtypesCore.h:23:0,
             from /home/benjamin/root-6.12.04/builddir/include/Rtypes.h:23,
             from /home/benjamin/root-6.12.04/builddir/include/TObject.h:17,
             from /home/benjamin/root-6.12.04/builddir/include/TNamed.h:25,
             from /home/benjamin/root-6.12.04/builddir/include/TGraph.h:24,
             from Precision_DiffFinie.cpp:15:
/home/benjamin/root-6.12.04/builddir/include/RConfig.h:47:4: error: #error "ROOT requires support for C++11 or higher."
 #  error "ROOT requires support for C++11 or higher."
^
 /home/benjamin/root-6.12.04/builddir/include/RConfig.h:49:5: error:  #error "Pass `-std=c++11` as compiler argument."
 #error "Pass `-std=c++11` as compiler argument."
 ^
In file included from /usr/include/c++/5/atomic:38:0,
             from /home/benjamin/root-6.12.04/builddir/include/Rtypes.h:29,
             from /home/benjamin/root-6.12.04/builddir/include/TObject.h:17,
             from /home/benjamin/root-6.12.04/builddir/include/TNamed.h:25,
             from /home/benjamin/root-6.12.04/builddir/include/TGraph.h:24,
             from Precision_DiffFinie.cpp:15:
/usr/include/c++/5/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
 #error This file requires compiler and library support \

Je pense que les erreurs suivantes sont dues au compilateur C ++ qui ne comprend pas ce que j'ai écrit car il ne pouvait pas être lié à la bibliothèque ROOT.

Est-ce que quelqu'un sait comment résoudre ce problème, ou pourrait m'expliquer ce que je fais mal? J'ai essayé de tout faire bien, mais j'ai sûrement raté quelque chose. et j'ai essayé de résoudre ce problème trop longtemps pour comprendre tout seul par moi-même, maintenant.

lemakefile :

# Makefile pour les exercices de calculs numeriques

# definition du compilateur
GPP=g++ -Wall

# lien vers les fichiers d'en-tete des classes ROOT (ROOTINC) et les librairies (ROOTLIB), cad les fichiers binaires
ROOTINC=-I`root-config --incdir`
ROOTLIB=`root-config --libs`

#La liste des executables a compiler
# les executables sont en .exe pour pouvoir beneficier de la regle generique de conversion de .o en .exe
EXE=MinMaxTableau.exe Optimisation_CalculSerie.exe Precision_DiffFinie.exe MethodeSecante.exe

#######################################################################################

# la premiere instruction du makefile est celle par défaut - quand on tape make sans donner d'argument après

all: ${EXE} 

####################################################################################### 

# Compilation

# Des classes
%.o:%.cpp %.h
    ${GPP} -c -o $@ ${ROOTINC}  $<

# Des programmes principaux
%.o:%.cpp
    ${GPP} -c -o $@ ${ROOTINC}  $<  

#######################################################################################

# Edition des liens
# Regle de conversion de chaque .o en .exe
%.exe: %.o 
    ${GPP} -o $@ $^ ${ROOTLIB}

#######################################################################################

# nettoyage
clean:
    rm -rf *.o ${EXE} *.pdf *.root *.png Print

Merci beaucoup.


1
2018-02-25 11:51


origine


Juste curieux pourquoi vous ne voulez pas utiliser pré-compilé à partir de "Distributions binaires" section? - N0rbert
@ N0rbert j'ai téléchargé que, utilisé ./configure, puis make et enfin sudo make install, comme je devais le faire à mon collège. J'ai rencontré des problèmes à différents moments de ce processus, principalement au sudo partie. Après un peu de fouille, le site recommandé cmake quand de tels problèmes se sont produits. Devrais-je essayer à nouveau avec l'ancienne méthode de non-travail? - epidoxe
Je n'ai jamais utilisé ROOT, mais le binaire est généralement plus simple à utiliser. - N0rbert
Basé sur Construire ROOT il ressemble à la cmake configure le compilateur avec cxx11 ON par défaut, et il veut que vous fassiez la même chose pour les programmes créés et liés avec lui - alors essayez d'ajouter -std=c++11 à ton GPP définition - steeldriver
@steeldriver Ajout -std=c++11 a parfaitement fonctionné! Je ne sais pas comment dire que cela a résolu mon problème. Pouvez-vous me dire comment ou juste poster-comme une réponse? Merci! - epidoxe


Réponses:


je vois ça ordinaire make les constructions ne sont pas recommandées par le CERN, mais tu peux essayer.

wget https://root.cern.ch/download/root_v6.12.04.source.tar.gz
tar -xzf root_v6.12.04.source.tar.gz

sudo apt-get install git dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \
libxft-dev libxext-dev

sudo apt-get install gfortran libssl-dev libpcre3-dev \
xlibmesa-glu-dev libglew1.5-dev libftgl-dev \
libmysqlclient-dev libfftw3-dev libcfitsio-dev \
graphviz-dev libavahi-compat-libdnssd-dev \
libldap2-dev python-dev libxml2-dev libkrb5-dev \
libgsl0-dev libqt4-dev

./configure
make -j4
sudo make install

Aussi pour votre information - Ubuntu Xenial a ROOT 5.34 paquets dans les dépôts. Vous pouvez les installer avec

sudo apt-get install root-system-bin

0
2018-02-25 15:16