OpenCV 3.1 升级会导致 Linux 上的链接器错误
OpenCV 3.1 Upgrade Leads to Linker Errors on Linux
我最近按照本指南从OpenCV 2.4.11升级到OpenCV 3.1。这个sudo make安装似乎已经成功运行,当我运行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;
}
返回错误:
main.cpp:-1: error: undefined reference of cv::imread(cv::String const&, int)
main.cpp:-1:错误:未定义对"cv::String::allocate(unsigned long)"的引用
main.cpp:-1: 错误: 未定义对 'cv::String::d eallocate()' 的引用
:-1:错误:收集 2:错误:ld 返回 1 退出状态
这可能是由于与以前的安装冲突吗?在我开始手动删除/usr/local/[lib | include | bin] 中的文件之前,我想我会先在这里问。有什么建议吗?
您的链接器路径可能是错误的。确保所需的 opencv 是链接器路径上的第一个,否则它可能链接到错误的链接。删除opencv2可能会解决问题...考虑将来使用包管理器,这样您就不会一直遇到这样的混乱。
我继续采用核选项(sudo rm 后跟 sudo make install),现在一切都编译了。我并不为此感到骄傲,也不一定提倡它,但如果其他人达到绝望的地步,你可能会发现这个杀戮日志很有帮助:
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
相关文章:
- 如何在 Linux 中构建共享库时使未定义引用的链接器失败
- 在Linux(而不是OSX)中链接时发生库冲突
- 动态链接-Linux与Windows
- 如何在 Oracle Linux 上的 Eclipse 中编译和链接 boost 库
- 如何在Linux中使用GLFW函数正确链接C++对象?
- 使用 MINGW 和 CPLEX 库链接从 Linux 编译 Windows 可执行文件
- 将错误GoogleMock与我在linux下的C++项目链接
- linux/g++ 链接的多重定义
- 在 Linux 中编译/链接多个 C++ 库
- Ogre 3D共享库与CMAKE链接时,在Linux上执行二进制时找不到
- 您如何将所有链接依赖项都包装到一个Linux静态库中
- Cmake Mac OSX库链接问题:在Linux上进行编译,但在Mac上进行了编译
- 在 Linux 上的 Visual Studio 中链接两个项目
- Vulkan + GLFW + Cmake在Linux环境下的链接问题
- 如何链接到与 Linux 中不同版本的 boost 链接的共享库
- Linux:C++库在重新编译后无法链接
- 简单派生类上的Linux GCC链接错误
- Linux(X11)上GLFW上的链接器错误
- Linux 共享库链接错误(未定义的符号)
- Linux C++.链接共享对象和主对象