YOLO darknet cannot compile , when opencv=1

Hello, I am new to this community. When i changed the openCV to 1 in darknet’s makefile, i get this error:
collect2: error: ld returned 1 exit statusMakefile:176: recipe for target 'darknet' failedmake: *** [darknet] Error 1

For my YOLO, I am using yoloV4, and the OpenCV version is 4.5.1. Ubuntu version is 18.04. What could be the reason that my darknet cannot compile?

I tried to search online, GitHub, and Reddit for similar posts, however, i could not find anyone that had similar problems. Does darknet just not work on the latest version of OpenCV? I am quite sure my installation of OpenCv was done properly, with the command
sudo apt-get install libopencv-dev

Thanks for taking the time to read my post!

This is the full process when i tried to compile the makefile:

chmod +x .sh g++ -std=c++11 -std=c++11 -Iinclude/ -I3rdparty/stb/include -DOPENCV pkg-config --cflags opencv4 2> /dev/null || pkg-config --cflags opencv -DGPU -I/usr/local/cuda/include/ -DCUDNN -DCUDNN_HALF -Wall -Wfatal-errors -Wno-unused-result -Wno-unknown-pragmas -fPIC -Ofast -DOPENCV -fopenmp -DGPU -DCUDNN -I/usr/local/cudnn/include -DCUDNN_HALF obj/image_opencv.o obj/http_stream.o obj/gemm.o obj/utils.o obj/dark_cuda.o obj/convolutional_layer.o obj/list.o obj/image.o obj/activations.o obj/im2col.o obj/col2im.o obj/blas.o obj/crop_layer.o obj/dropout_layer.o obj/maxpool_layer.o obj/softmax_layer.o obj/data.o obj/matrix.o obj/network.o obj/connected_layer.o obj/cost_layer.o obj/parser.o obj/option_list.o obj/darknet.o obj/detection_layer.o obj/captcha.o obj/route_layer.o obj/writing.o obj/box.o obj/nightmare.o obj/normalization_layer.o obj/avgpool_layer.o obj/coco.o obj/dice.o obj/yolo.o obj/detector.o obj/layer.o obj/compare.o obj/classifier.o obj/local_layer.o obj/swag.o obj/shortcut_layer.o obj/activation_layer.o obj/rnn_layer.o obj/gru_layer.o obj/rnn.o obj/rnn_vid.o obj/crnn_layer.o obj/demo.o obj/tag.o obj/cifar.o obj/go.o obj/batchnorm_layer.o obj/art.o obj/region_layer.o obj/reorg_layer.o obj/reorg_old_layer.o obj/super.o obj/voxel.o obj/tree.o obj/yolo_layer.o obj/gaussian_yolo_layer.o obj/upsample_layer.o obj/lstm_layer.o obj/conv_lstm_layer.o obj/scale_channels_layer.o obj/sam_layer.o obj/convolutional_kernels.o obj/activation_kernels.o obj/im2col_kernels.o obj/col2im_kernels.o obj/blas_kernels.o obj/crop_layer_kernels.o obj/dropout_layer_kernels.o obj/maxpool_layer_kernels.o obj/network_kernels.o obj/avgpool_layer_kernels.o -o darknet -lm -pthread pkg-config --libs opencv4 2> /dev/null || pkg-config --libs opencv -lgomp -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -L/usr/local/cudnn/lib64 -lcudnn -lstdc++ obj/image_opencv.o: In function load_image_mat_cv': image_opencv.cpp:(.text+0x343): undefined reference tocv::imread(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' obj/image_opencv.o: In function create_window_cv': image_opencv.cpp:(.text+0x1476): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x14d4): undefined reference to cv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x1534): undefined reference tocv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' obj/image_opencv.o: In function resize_window_cv': image_opencv.cpp:(.text+0x1757): undefined reference tocv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' obj/image_opencv.o: In function make_window': image_opencv.cpp:(.text+0x194e): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x19bb): undefined reference to cv::setWindowProperty(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, double)' image_opencv.cpp:(.text+0x1a35): undefined reference tocv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x1ab1): undefined reference to cv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' obj/image_opencv.o: In functionshow_image_cv': image_opencv.cpp:(.text+0x1d94): undefined reference to cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x1e1d): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In function show_image_mat': image_opencv.cpp:(.text+0x20fe): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x2173): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In functioncreate_video_writer': image_opencv.cpp:(.text+0x23a9): undefined reference to cv::VideoWriter::VideoWriter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, double, cv::Size_<int>, bool)' obj/image_opencv.o: In functionget_capture_video_stream': image_opencv.cpp:(.text+0x267a): undefined reference to cv::VideoCapture::VideoCapture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' obj/image_opencv.o: In functiondraw_detections_cv_v3': image_opencv.cpp:(.text+0x38ba): undefined reference to cv::getTextSize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, double, int, int*)' image_opencv.cpp:(.text+0x3c92): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o: In function draw_train_chart': image_opencv.cpp:(.text+0x438f): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x46b8): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x4850): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x4954): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o:image_opencv.cpp:(.text+0x4aa5): more undefined references tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' follow obj/image_opencv.o: In function draw_train_chart': image_opencv.cpp:(.text+0x4c63): undefined reference tocv::imread(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x4d17): undefined reference to cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x4d89): undefined reference tocv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x4dff): undefined reference to cv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x4e97): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In function draw_train_loss': image_opencv.cpp:(.text+0x56d8): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x57fc): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x5a61): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x5b81): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x5d4e): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o:image_opencv.cpp:(.text+0x5e72): more undefined references to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' follow obj/image_opencv.o: In functiondraw_train_loss': image_opencv.cpp:(.text+0x6391): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' image_opencv.cpp:(.text+0x64bf): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o: In function cv_draw_object': image_opencv.cpp:(.text+0x7d26): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x7d38): undefined reference to cv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x7d66): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' image_opencv.cpp:(.text+0x7d72): undefined reference to cv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x7d83): undefined reference tocv::setMouseCallback(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, void ()(int, int, int, int, void), void)' image_opencv.cpp:(.text+0x7dec): undefined reference to cv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int*, int, void (*)(int, void*), void*)' image_opencv.cpp:(.text+0x7e8c): undefined reference tocv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int, void ()(int, void), void)' image_opencv.cpp:(.text+0x7eed): undefined reference to cv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int*, int, void (*)(int, void*), void*)' image_opencv.cpp:(.text+0x7f3f): undefined reference tocv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int, void ()(int, void), void)' image_opencv.cpp:(.text+0x80ca): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x8136): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x81a3): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x82a7): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x831a): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o:image_opencv.cpp:(.text+0x838c): more undefined references tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' follow obj/image_opencv.o: In function cv_draw_object': image_opencv.cpp:(.text+0x83e0): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' image_opencv.cpp:(.text+0x85e5): undefined reference to cv::rectangle(cv::_InputOutputArray const&, cv::Rect_<int>, cv::Scalar_<double> const&, int, int, int)' image_opencv.cpp:(.text+0x87ee): undefined reference tocv::rectangle(cv::_InputOutputArray const&, cv::Rect_<int>, cv::Scalar_<double> const&, int, int, int)' image_opencv.cpp:(.text+0x8820): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In functionshow_acnhors': image_opencv.cpp:(.text+0x8f51): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' obj/http_stream.o: In functionMJPG_sender::write(cv::Mat const&)': http_stream.cpp:(.text._ZN11MJPG_sender5writeERKN2cv3MatE[_ZN11MJPG_sender5writeERKN2cv3MatE]+0x1cc): undefined reference to `cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&, std::vector<unsigned char,="" std::allocator<unsigned="" char=""> >&, std::vector<int, std::allocator<int=""> > const&)' collect2: error: ld returned 1 exit status Makefile:176: recipe for target 'darknet' failed make: * [darknet] Error 1

I’m sorry, here’s the full process on the terminal:

chmod +x .sh g++ -std=c++11 -std=c++11 -Iinclude/ -I3rdparty/stb/include -DOPENCV pkg-config --cflags opencv4 2> /dev/null || pkg-config --cflags opencv -DGPU -I/usr/local/cuda/include/ -DCUDNN -DCUDNN_HALF -Wall -Wfatal-errors -Wno-unused-result -Wno-unknown-pragmas -fPIC -Ofast -DOPENCV -fopenmp -DGPU -DCUDNN -I/usr/local/cudnn/include -DCUDNN_HALF obj/image_opencv.o obj/http_stream.o obj/gemm.o obj/utils.o obj/dark_cuda.o obj/convolutional_layer.o obj/list.o obj/image.o obj/activations.o obj/im2col.o obj/col2im.o obj/blas.o obj/crop_layer.o obj/dropout_layer.o obj/maxpool_layer.o obj/softmax_layer.o obj/data.o obj/matrix.o obj/network.o obj/connected_layer.o obj/cost_layer.o obj/parser.o obj/option_list.o obj/darknet.o obj/detection_layer.o obj/captcha.o obj/route_layer.o obj/writing.o obj/box.o obj/nightmare.o obj/normalization_layer.o obj/avgpool_layer.o obj/coco.o obj/dice.o obj/yolo.o obj/detector.o obj/layer.o obj/compare.o obj/classifier.o obj/local_layer.o obj/swag.o obj/shortcut_layer.o obj/activation_layer.o obj/rnn_layer.o obj/gru_layer.o obj/rnn.o obj/rnn_vid.o obj/crnn_layer.o obj/demo.o obj/tag.o

obj/cifar.o obj/go.o obj/batchnorm_layer.o obj/art.o obj/region_layer.o obj/reorg_layer.o obj/reorg_old_layer.o obj/super.o obj/voxel.o obj/tree.o obj/yolo_layer.o obj/gaussian_yolo_layer.o obj/upsample_layer.o obj/lstm_layer.o obj/conv_lstm_layer.o obj/scale_channels_layer.o obj/sam_layer.o obj/convolutional_kernels.o obj/activation_kernels.o obj/im2col_kernels.o obj/col2im_kernels.o obj/blas_kernels.o obj/crop_layer_kernels.o obj/dropout_layer_kernels.o obj/maxpool_layer_kernels.o obj/network_kernels.o obj/avgpool_layer_kernels.o -o darknet -lm -pthread pkg-config --libs opencv4 2> /dev/null || pkg-config --libs opencv -lgomp -L/usr/local/cuda/lib64 -lcuda -lcudart -lcublas -lcurand -L/usr/local/cudnn/lib64 -lcudnn -lstdc++ obj/image_opencv.o: In function load_image_mat_cv': image_opencv.cpp:(.text+0x343): undefined reference tocv::imread(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' obj/image_opencv.o: In function create_window_cv': image_opencv.cpp:(.text+0x1476): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x14d4): undefined reference to
cv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x1534): undefined reference tocv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' obj/image_opencv.o: In function resize_window_cv': image_opencv.cpp:(.text+0x1757): undefined reference tocv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' obj/image_opencv.o: In function make_window': image_opencv.cpp:(.text+0x194e): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x19bb): undefined reference to cv::setWindowProperty(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, double)' image_opencv.cpp:(.text+0x1a35): undefined reference tocv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x1ab1): undefined reference to cv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' obj/image_opencv.o: In functionshow_image_cv': image_opencv.cpp:(.text+0x1d94): undefined reference to cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x1e1d): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In function show_image_mat': image_opencv.cpp:(.text+0x20fe): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x2173): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In functioncreate_video_writer': image_opencv.cpp:(.text+0x23a9): undefined reference to cv::VideoWriter::VideoWriter(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, double, cv::Size_<int>, bool)' obj/image_opencv.o: In functionget_capture_video_stream': image_opencv.cpp:(.text+0x267a): undefined reference to cv::VideoCapture::VideoCapture(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' obj/image_opencv.o: In functiondraw_detections_cv_v3': image_opencv.cpp:(.text+0x38ba): undefined reference to cv::getTextSize(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, double, int, int*)' image_opencv.cpp:(.text+0x3c92): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double,
cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o: In function draw_train_chart': image_opencv.cpp:(.text+0x438f): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x46b8): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x4850): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x4954): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'

obj/image_opencv.o:image_opencv.cpp:(.text+0x4aa5): more undefined references tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' follow obj/image_opencv.o: In function draw_train_chart': image_opencv.cpp:(.text+0x4c63): undefined reference tocv::imread(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x4d17): undefined reference to cv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x4d89): undefined reference

tocv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x4dff): undefined reference to cv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x4e97): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In function draw_train_loss': image_opencv.cpp:(.text+0x56d8): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'

image_opencv.cpp:(.text+0x57fc): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x5a61): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'

image_opencv.cpp:(.text+0x5b81): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x5d4e): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o:image_opencv.cpp:(.text+0x5e72): more undefined references to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int,

double, cv::Scalar_<double>, int, int, bool)' follow obj/image_opencv.o: In functiondraw_train_loss': image_opencv.cpp:(.text+0x6391): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' image_opencv.cpp:(.text+0x64bf): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' obj/image_opencv.o: In function cv_draw_object': image_opencv.cpp:(.text+0x7d26): undefined reference tocv::namedWindow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int)' image_opencv.cpp:(.text+0x7d38): undefined reference to cv::resizeWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x7d66): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray

const&)' image_opencv.cpp:(.text+0x7d72): undefined reference to cv::moveWindow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int, int)' image_opencv.cpp:(.text+0x7d83): undefined reference tocv::setMouseCallback(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, void ()(int, int, int, int, void), void)' image_opencv.cpp:(.text+0x7dec): undefined reference to cv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int*, int, void (*)(int, void*), void*)' image_opencv.cpp:(.text+0x7e8c): undefined reference tocv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int, void ()(int, void), void)' image_opencv.cpp:(.text+0x7eed): undefined reference to cv::createTrackbar(std::__cxx11::basic_string<char,

std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int*, int, void (*)(int, void*), void*)' image_opencv.cpp:(.text+0x7f3f): undefined reference tocv::createTrackbar(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, int, int, void ()(int, void), void)' image_opencv.cpp:(.text+0x80ca): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x8136): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x81a3): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x82a7): undefined reference tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' image_opencv.cpp:(.text+0x831a): undefined reference to cv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)'
obj/image_opencv.o:image_opencv.cpp:(.text+0x838c): more undefined references tocv::putText(cv::_InputOutputArray const&, std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::Point_<int>, int, double, cv::Scalar_<double>, int, int, bool)' follow obj/image_opencv.o: In function cv_draw_object': image_opencv.cpp:(.text+0x83e0): undefined reference tocv::imshow(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator<char> > const&, cv::_InputArray const&)' image_opencv.cpp:(.text+0x85e5): undefined reference to cv::rectangle(cv::_InputOutputArray const&, cv::Rect_<int>, cv::Scalar_<double> const&, int, int, int)' image_opencv.cpp:(.text+0x87ee): undefined reference tocv::rectangle(cv::_InputOutputArray const&, cv::Rect_<int>, cv::Scalar_<double> const&, int, int, int)' image_opencv.cpp:(.text+0x8820):

undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' obj/image_opencv.o: In functionshow_acnhors': image_opencv.cpp:(.text+0x8f51): undefined reference to cv::imshow(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, cv::_InputArray const&)' obj/http_stream.o: In functionMJPG_sender::write(cv::Mat const&)': http_stream.cpp:(.text._ZN11MJPG_sender5writeERKN2cv3MatE[_ZN11MJPG_sender5writeERKN2cv3MatE]+0x1cc): undefined reference to cv::imencode(std::__cxx11::basic_string<char, std::char_traits<char="">, std::allocator > const&, cv::_InputArray const&, std::vector<unsigned char,="" std::allocator<unsigned="" char=""> >&, std::vector<int, std::allocator<int=""> > const&)’ collect2: error: ld returned 1 exit status Makefile:176: recipe for target ‘darknet’ failed make: * [darknet] Error 1`

please fix the formatting of that output. that is impossible to read. if the forum allows you to edit your posts, please do.

Do i remove some parts of the output, or just reformat it so that it looks readable?

you best direct your questions to the author of that repository. this is an error related to that repository’s code.

further, I would highly doubt that ubuntu 18.04’s libopencv-dev package gave you OpenCV v4.5.1, so you should check your claim and state the actual version you are using.

BTW, can you post the output of the pkg-config --libs opencv4 (or opencv) command?

It says,
Package opencv4 was not found in the pkg-config search path.
Perhaps you should add the directory containing opencv4.pc’ ``to the PKG_CONFIG_PATH environment variable
No package 'opencv4' found

Okay, that’s the problem. pkg-config is not enabled by default in OpenCV4.

Either you have to recompile OpenCV with -DOPENCV_GENERATE_PKGCONFIG flag to get a pkg_config file, or change the
pkg-config --libs opencv4 2> /dev/null || pkg-config --libs opencv
part of the makefile with:
-lopencv_core -lopencv_highgui -lopencv_[whatever_files_you_find_in_/usr/lib]

1 Like