2017-08-21 1 views
1

Ich versuche, jedes System mit ros zu kombinieren, aber vorher wollte ich überprüfen, ob es gut funktioniert oder nicht, damit ich auf CLion laufen, und ich habe diese Fehler.Nachdem ich mrpt manuell kompiliert habe, habe ich ein Problem mit build mrpt files

/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 

Als ich es zuerst kompiliert, es war in Ordnung, aber später hatte ich einige Probleme mit mrpt Header-Dateien, löschte ich sie alle und es manuell zusammengestellt, und dieses Problem passiert ist. Kann ich einen Rat bekommen?

Antwort

0

Sie haben wahrscheinlich eine Mischung aus verschiedenen MRPT-Versionen in Ihrem System installiert.

Ich empfehle nicht sudo make install zu tun, es sei denn, Sie haben einen starken Grund, es zu tun; Nur das Kompilieren des Projekts in einem eigenen Build-Verzeichnis erzeugt eine MRPTConfig.cmake Datei, die es CMake ermöglicht, MRPT von ROS oder einem anderen Benutzerprojekt zu finden. Wenn CMake es nicht automatisch findet, setzen Sie einfach die Umgebungsvariable export MRPT_DIR=/home/xxx/path/to/mrpt/build und es wird funktionieren.

Ihr Problem ist jetzt Reinigung aller Unordnung, die unter /usr/local/ sein kann. Schauen Sie sich dieses Verzeichnis an und wenn das einzige Projekt, das Sie haben, make install ed ist MRPT, empfehle ich dringend, es mit sudo rm -fr /usr/local/* zu löschen.

Wenn Sie andere Projekte haben ... nun ... müssen Sie sudo make uninstall von der MRPT-Build-Verzeichnis ausführen, dann manuell sicherstellen, dass keine verbleibenden Dateien sind.

Der Link Fehler gegen OpenCV sieht auch aus wie CMake konfiguriert das Projekt für eine OpenCV-Version, dann wurde eine andere installiert (vielleicht über ROS-Pakete?). Nachdem Sie die oben genannte Bereinigung von /usr/local durchgeführt haben, löschen Sie Ihr aktuelles MRPT CMake Build-Verzeichnis und starten Sie erneut von vorne.

Verwandte Themen