OpenCV 3.1 升级导致 Linux 上的链接器错误
OpenCV 3.1 Upgrade Leads to Linker Errors on Linux
我最近通过关注 this guide 从 OpenCV 2.4.11 升级到 OpenCV 3.1。这个 sudo make install 似乎已经成功运行,当我 运行 pkg-config --modversion opencv 时,我得到了合适的版本 (3.1.0)。
但是由于某些原因,我现在运行遇到链接器错误,甚至连简单的程序都无法编译,例如:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char* argv[])
{
Mat im1 = imread(argv[1]);
return 0;
}
returns 错误:
main.cpp:-1: error: undefined reference to cv::imread(cv::String const&, int)
main.cpp:-1: error: undefined reference to `cv::String::allocate(unsigned long)'
main.cpp:-1: error: undefined reference to `cv::String::deallocate()'
:-1: error: collect2: error: ld returned 1 exit status
会不会是和之前的安装冲突了?在我开始手动删除 /usr/local/ [lib | 中的文件之前包括 | bin],我想我会先在这里问。有什么建议吗?
您的 linker 路径可能有误。确保你想要的 opencv 是你 linker 路径上的第一个,否则它可能 link 反对错误的。删除 opencv2 可能会解决问题...考虑在将来使用包管理器,这样您就不会一直面对这样的混乱。
我继续并选择了核选项(sudo rm 后跟 sudo make install),现在一切都可以编译了。我并不以此为荣,也不一定提倡它,但如果其他人达到这种绝望的地步,你可能会发现这个 kill log 有帮助:
sudo rm -r /usr/share/opencv
sudo rm -r /usr/share/OpenCV/
sudo rm -r /usr/local/include/opencv
sudo rm -r /usr/local/bin/opencv*
sudo rm -r /usr/local/share/OpenCV/
sudo rm -r /usr/local/lib/libopencv_*
sudo rm /usr/local/lib/pkgconfig/opencv.pc
sudo rm /usr/local/lib/python2.7/dist-packages/cv2.so
我最近通过关注 this guide 从 OpenCV 2.4.11 升级到 OpenCV 3.1。这个 sudo make install 似乎已经成功运行,当我 运行 pkg-config --modversion opencv 时,我得到了合适的版本 (3.1.0)。
但是由于某些原因,我现在运行遇到链接器错误,甚至连简单的程序都无法编译,例如:
#include <opencv2/opencv.hpp>
using namespace cv;
int main(int argc, char* argv[])
{
Mat im1 = imread(argv[1]);
return 0;
}
returns 错误:
main.cpp:-1: error: undefined reference to cv::imread(cv::String const&, int)
main.cpp:-1: error: undefined reference to `cv::String::allocate(unsigned long)'
main.cpp:-1: error: undefined reference to `cv::String::deallocate()'
:-1: error: collect2: error: ld returned 1 exit status
会不会是和之前的安装冲突了?在我开始手动删除 /usr/local/ [lib | 中的文件之前包括 | bin],我想我会先在这里问。有什么建议吗?
您的 linker 路径可能有误。确保你想要的 opencv 是你 linker 路径上的第一个,否则它可能 link 反对错误的。删除 opencv2 可能会解决问题...考虑在将来使用包管理器,这样您就不会一直面对这样的混乱。
我继续并选择了核选项(sudo rm 后跟 sudo make install),现在一切都可以编译了。我并不以此为荣,也不一定提倡它,但如果其他人达到这种绝望的地步,你可能会发现这个 kill log 有帮助:
sudo rm -r /usr/share/opencv
sudo rm -r /usr/share/OpenCV/
sudo rm -r /usr/local/include/opencv
sudo rm -r /usr/local/bin/opencv*
sudo rm -r /usr/local/share/OpenCV/
sudo rm -r /usr/local/lib/libopencv_*
sudo rm /usr/local/lib/pkgconfig/opencv.pc
sudo rm /usr/local/lib/python2.7/dist-packages/cv2.so