Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cannot find lsgm #61

Open
bchao1 opened this issue Oct 30, 2020 · 7 comments
Open

Cannot find lsgm #61

bchao1 opened this issue Oct 30, 2020 · 7 comments

Comments

@bchao1
Copy link

bchao1 commented Oct 30, 2020

After building libsgm by following the steps in README, I tested out code in sample/image. I executed the following:

mkdir build
cd build
cmake ../
make

and got the following error:

/usr/bin/ld: cannot find -lsgm
collect2: error: ld returned 1 exit status
CMakeFiles/stereo_test.dir/build.make:148: recipe for target 'stereo_test' failed
make[2]: *** [stereo_test] Error 1
CMakeFiles/Makefile2:75: recipe for target 'CMakeFiles/stereo_test.dir/all' failed
make[1]: *** [CMakeFiles/stereo_test.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Why is this error happening?

@ghost
Copy link

ghost commented Oct 30, 2020

Hi. @bchao1
Are you saying that building samples failed?

Try following build instruction:

developer@de01b56f2148:/tmp$ git clone https://github.com/fixstars/libSGM
Cloning into 'libSGM'...
remote: Enumerating objects: 2129, done.
remote: Total 2129 (delta 0), reused 0 (delta 0), pack-reused 2129
Receiving objects: 100% (2129/2129), 346.91 KiB | 595.00 KiB/s, done.
Resolving deltas: 100% (1384/1384), done.
developer@de01b56f2148:/tmp$ cd libSGM/
developer@de01b56f2148:/tmp/libSGM$ mkdir build
developer@de01b56f2148:/tmp/libSGM$ cd build/
developer@de01b56f2148:/tmp/libSGM/build$ cmake .. -DENABLE_SAMPLES=on
developer@de01b56f2148:/tmp/libSGM/build$ make
developer@de01b56f2148:/tmp/libSGM/build$ ls sample/image/
CMakeFiles  Makefile  cmake_install.cmake  stereo_test

@bchao1
Copy link
Author

bchao1 commented Nov 2, 2020

After executing the above commands, I got the following error message:

[ 68%] Building CXX object sample/image/CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o
[ 72%] Linking CXX executable stereo_test
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o: In function `std::string cv::CommandLineParser::get<std::string>(std::string const&, bool) const':
stereosgm_image.cpp:(.text._ZNK2cv17CommandLineParser3getISsEET_RKSsb[_ZNK2cv17CommandLineParser3getISsEET_RKSsb]+0x32): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o: In function `main':
stereosgm_image.cpp:(.text.startup+0x87): undefined reference to `cv::CommandLineParser::CommandLineParser(int, char const* const*, std::string const&)'
stereosgm_image.cpp:(.text.startup+0xca): undefined reference to `cv::CommandLineParser::has(std::string const&) const'
stereosgm_image.cpp:(.text.startup+0x16f): undefined reference to `cv::imread(std::string const&, int)'
stereosgm_image.cpp:(.text.startup+0x1ec): undefined reference to `cv::imread(std::string const&, int)'
stereosgm_image.cpp:(.text.startup+0x273): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x2da): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x33c): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x3a1): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
stereosgm_image.cpp:(.text.startup+0x40c): undefined reference to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const'
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o:stereosgm_image.cpp:(.text.startup+0x46d): more undefined references to `cv::CommandLineParser::getByName(std::string const&, bool, cv::Param, void*) const' follow
CMakeFiles/stereo_test.dir/stereosgm_image.cpp.o: In function `main':
stereosgm_image.cpp:(.text.startup+0xfd1): undefined reference to `cv::setWindowTitle(std::string const&, std::string const&)'
stereosgm_image.cpp:(.text.startup+0x1048): undefined reference to `cv::imshow(std::string const&, cv::_InputArray const&)'
collect2: error: ld returned 1 exit status
sample/image/CMakeFiles/stereo_test.dir/build.make:149: recipe for target 'sample/image/stereo_test' failed
make[2]: *** [sample/image/stereo_test] Error 1
CMakeFiles/Makefile2:147: recipe for target 'sample/image/CMakeFiles/stereo_test.dir/all' failed
make[1]: *** [sample/image/CMakeFiles/stereo_test.dir/all] Error 2
Makefile:129: recipe for target 'all' failed
make: *** [all] Error 2

@ghost
Copy link

ghost commented Nov 2, 2020

CMake checks OpenCV exists before build.
From your log, linking OpenCV failed. So I suspect that OpenCV installation failed.

Did you succeed to build any programs using OpenCV?

@bchao1
Copy link
Author

bchao1 commented Nov 2, 2020

I'm using opencv4 and I'm sure that I've got opencv on my computer. I added some messages in the top-level CMakeLists.txt:

-- Found OpenCV: /usr/local (found version "4.2.0") 
-- OpenCV library status:
--     version: 4.2.0
--     libraries: opencv_calib3d;opencv_core;opencv_dnn;opencv_features2d;opencv_flann;opencv_gapi;opencv_highgui;opencv_imgcodecs;opencv_imgproc;opencv_ml;opencv_objdetect;opencv_photo;opencv_stitching;opencv_video;opencv_videoio;opencv_aruco;opencv_bgsegm;opencv_bioinspired;opencv_ccalib;opencv_cudaarithm;opencv_cudabgsegm;opencv_cudafeatures2d;opencv_cudafilters;opencv_cudaimgproc;opencv_cudalegacy;opencv_cudaobjdetect;opencv_cudaoptflow;opencv_cudastereo;opencv_cudawarping;opencv_cudev;opencv_datasets;opencv_dnn_objdetect;opencv_dnn_superres;opencv_dpm;opencv_face;opencv_freetype;opencv_fuzzy;opencv_hdf;opencv_hfs;opencv_img_hash;opencv_line_descriptor;opencv_optflow;opencv_phase_unwrapping;opencv_plot;opencv_quality;opencv_reg;opencv_rgbd;opencv_saliency;opencv_sfm;opencv_shape;opencv_stereo;opencv_structured_light;opencv_superres;opencv_surface_matching;opencv_text;opencv_tracking;opencv_videostab;opencv_xfeatures2d;opencv_ximgproc;opencv_xobjdetect;opencv_xphoto
--     include path: /usr/local/include/opencv4

Not sure why make is not successfully compiling though.
Thanks!

@bchao1
Copy link
Author

bchao1 commented Nov 2, 2020

How can I manually compile a single sample in the samples/ folder?

@ghost
Copy link

ghost commented Nov 2, 2020

I haven't tried that.
I think it needs to build after Add specify link instruction to CMakeLists.txt manually.

@sisco0
Copy link

sisco0 commented Jan 9, 2021

Hello @bchao1 , did you try to append at the file specified below, just after core, the words highgui and imgproc? Maybe that is what is left. Please tell me if that works for you.

find_package(OpenCV REQUIRED core)

Who knows if that should be added at the file below as well.

find_package(OpenCV REQUIRED)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants