2017-08-21 4 views
1

私はすべてのシステムをrosと組み合わせようとしていますが、それ以前にはうまく動作しているかどうかをチェックしたかったのでCLionにファイルを実行しました。これらのエラー。私が最初にそれをコンパイルすると私は手動でmrptをコンパイルした後、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 

、それは大丈夫だったが、その後、私はmrptヘッダファイルといくつかの問題を持っていた、私はそれらをすべて削除し、それを手動でコンパイルされ、この問題が起こりました。アドバイスを受けることはできますか?

答えて

0

おそらく、さまざまな種類のMRPTがシステムにインストールされている可能性があります。

強い理由がない限り、sudo make installを実行することはお勧めできません。独自のビルドディレクトリでプロジェクトをコンパイルするだけでMRPTConfig.cmakeファイルが生成され、CMakeはROSやその他のユーザープロジェクトからMRPTを見つけることができます。

CMakeが自動的に見つからない場合は、環境変数export MRPT_DIR=/home/xxx/path/to/mrpt/buildを設定すれば動作します。

あなたの問題は、/usr/local/の下にあるかもしれないすべての混乱を掃除することです。そのディレクトリを見て、make installがある唯一のプロジェクトがMRPTの場合は、sudo rm -fr /usr/local/*で削除することを強くお勧めします。

他のプロジェクトがある場合は...よく... MRPTビルドディレクトリからsudo make uninstallを実行し、残りのファイルがないことを手動で確認する必要があります。

OpenCVに対するリンクエラーは、1つのopencvバージョン用にCMakeがプロジェクトを設定したように見えますが、もう1つは(おそらくROSパッケージ経由で)インストールされているようです。 上記の/usr/localのクリーンアップを行った後、現在のMRPT CMakeビルドディレクトリを削除し、最初からやり直してください。

関連する問題