如何在 CentOS 中链接 OpenCV 库

How to link OpenCV library in CentOS

本文关键字:链接 OpenCV CentOS      更新时间:2023-10-16

我在编译测试文件时收到此错误:

undefined reference to cv::imread(cv::String const&, int)
undefined reference to cv::imshow(cv::String const&, cv::_InputArray const&)

我的代码是:

#include <opencv2/opencv.hpp>
int ImageShow() {
const char* filename = "/home/users/wuchang.li/000001.jpg";
cv::Mat src = cv::imread(filename, CV_LOAD_IMAGE_GRAYSCALE);
cv::imshow("src", src);
cv::waitKey();
return 0;
}
int main(){
ImageShow();
return 0;
}

我尝试了几种方法:

我使用过:

g++ test.cpp -o getmask `pkg-config opencv --cflags --libs`

然后使用:

g++ test.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_objdetect

我无权修改文件/etc/ld.so.conf.d/opencv.conf

我确定我的包含路径和库路径是正确的。

使用链接器-L标志时,表示共享库位于非标准位置。该标志使它成为链接,但运行时链接器ld.so找不到共享库。

除了-L<dir>在链接共享库时使用-Wl,-rpath=<dir>

请勿使用LD_LIBRARY_PATH,有关详细信息,请参阅LD_LIBRARY_PATH被认为有害。

编译时,请始终使用-Wall -Wextra -Werror以防止编译时出现错误。