2017-08-21 2 views
1

J'essaie de combiner chaque système avec ros mais avant cela, je voulais vérifier si cela fonctionne bien ou pas, donc je cours le fichier sur CLion, et j'ai ces erreurs.Après avoir compilé mrpt manuellement, j'ai un problème avec les fichiers build mrpt

/home/ian/Downloads/clion-2017.2.1/bin/cmake/bin/cmake --build /home/ian/CLionProjects/mrqt --target mrpt -- -j 4 
[ 50%] Linking CXX executable mrpt 
/usr/bin/ld: warning: libopencv_imgcodecs3.so.3.2, needed by /usr/local/lib/libmrpt-base.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libopencv_imgproc3.so.3.2, needed by /usr/local/lib/libmrpt-base.so, not found (try using -rpath or -rpath-link) 
/usr/bin/ld: warning: libopencv_core3.so.3.2, needed by /usr/local/lib/libmrpt-base.so, not found (try using -rpath or -rpath-link) 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvLoadImage' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvConvertImage' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvReleaseImage' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvSplit' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvMatchTemplate' 
/usr/local/lib/libmrpt-base.so: undefined reference to `_IplImage::_IplImage(cv::Mat const&)' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvCreateImage' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvSmooth' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvFlip' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvGetSize' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvCvtColor' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvCircle' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvGetQuadrangleSubPix' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvRemap' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvLine' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvSaveImage' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvCopy' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvCloneImage' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvSetImageROI' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvEqualizeHist' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvMinMaxLoc' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvMerge' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvResize' 
/usr/local/lib/libmrpt-base.so: undefined reference to `cvUndistort2' 
collect2: error: ld returned 1 exit status 
CMakeFiles/mrpt.dir/build.make:94: recipe for target 'mrpt' failed 
make[3]: *** [mrpt] Error 1 
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/mrpt.dir/all' failed 
make[2]: *** [CMakeFiles/mrpt.dir/all] Error 2 
CMakeFiles/Makefile2:79: recipe for target 'CMakeFiles/mrpt.dir/rule' failed 
make[1]: *** [CMakeFiles/mrpt.dir/rule] Error 2 
Makefile:118: recipe for target 'mrpt' failed 
make: *** [mrpt] Error 2 

Quand je compilé, il était bien, mais plus tard j'ai eu quelques problèmes avec mrpt fichiers d'en-tête, je les ai supprimé tous et compilé manuellement, et ce problème est arrivé. Puis-je avoir des conseils?

Répondre

0

Vous avez probablement un mélange de différentes versions de MRPT installées dans votre système.

Je ne recommande pas de faire sudo make install sauf si vous avez une bonne raison de le faire; Le simple fait de compiler le projet dans son propre répertoire de génération génère un fichier MRPTConfig.cmake, ce qui permet à CMake de trouver MRPT à partir de ROS ou de tout autre projet utilisateur.

Si CMake ne le trouve pas automatiquement, il suffit de définir la variable d'environnement export MRPT_DIR=/home/xxx/path/to/mrpt/build et cela fonctionnera.

Votre problème maintenant nettoie tout le désordre qui peut être sous /usr/local/. Jetez un oeil à ce répertoire et si le seul projet que vous avez make install ed est MRPT, je recommande fortement de le supprimer avec sudo rm -fr /usr/local/*.

Si vous avez d'autres projets ... eh bien ... vous devez exécuter sudo make uninstall à partir du répertoire de construction MRPT, puis vérifier manuellement qu'il n'y a pas de fichiers restants.

L'erreur de lien contre OpenCV ressemble également à CMake a configuré le projet pour une version opencv, puis un autre a été installé (peut-être via des paquets ROS?). Après avoir nettoyé /usr/local mentionné ci-dessus, supprimez votre répertoire de construction MRPT CMake actuel et recommencez à zéro.