尝试在 os x 上构建 opencv 时出错

Posted

技术标签:

【中文标题】尝试在 os x 上构建 opencv 时出错【英文标题】:Errors trying to build opencv on os x 【发布时间】:2012-07-27 22:14:08 【问题描述】:

我正在尝试在 OS X 10.6.8 上构建 OpenCV。我下载了源代码,然后创建了一个构建目录,然后运行 ​​ccmake 进行配置,然后运行 ​​cmake。当我运行 make 时,我得到以下输出:

[laptop] build$ pwd
/Users/jesse.aldridge/OpenCV-2.4.2/build
[laptop] build$ make
...
[ 92%] Built target opencv_perf_photo_pch_dephelp
[ 92%] Built target pch_Generate_opencv_perf_photo
[ 93%] Built target opencv_perf_photo
[ 93%] Built target opencv_test_photo_pch_dephelp
[ 94%] Built target pch_Generate_opencv_test_photo
[ 94%] Built target opencv_test_photo
Linking CXX shared library ../../lib/cv2.so
Undefined symbols for architecture x86_64:
  "_PyGILState_Ensure", referenced from:
      OnMouse(int, int, int, int, void*)in cv2.cpp.o
      OnChange(int, void*)in cv2.cpp.o
      NumpyAllocator::allocate(int, int const*, int, int*&, unsigned char*&, unsigned char*&, unsigned long*)in cv2.cpp.o
      NumpyAllocator::deallocate(int*, unsigned char*, unsigned char*)in cv2.cpp.o
  "_PyGILState_Release", referenced from:
      OnMouse(int, int, int, int, void*)in cv2.cpp.o
      OnChange(int, void*)in cv2.cpp.o
      NumpyAllocator::allocate(int, int const*, int, int*&, unsigned char*&, unsigned char*&, unsigned long*)in cv2.cpp.o
      NumpyAllocator::deallocate(int*, unsigned char*, unsigned char*)in cv2.cpp.o

  ...a bunch of similar errors

我没有太多的 C++ 经验,所以我不确定这个错误是怎么回事。有什么建议吗?

这是完整的输出:https://gist.github.com/3190726

【问题讨论】:

【参考方案1】:

进入build 目录后,以下是命令:

cmake -G "Unix Makefiles" ..
make -j8
sudo make install

这一直对我有用。不要忘记 cmake 命令末尾的两个点。首先尝试一下,如果有效,您可以尝试更改 ccmake 中的选项。您不应该在 cmake 之前运行 ccmake。它只是 cmake 的一个交互式前端。如果您使用 ccmake 生成 make 文件,则不应运行 cmake。直接从 ccmake 去 make。

【讨论】:

以上是关于尝试在 os x 上构建 opencv 时出错的主要内容,如果未能解决你的问题,请参考以下文章

在 OS X 上从源代码构建 PHP 5.2.10 时链接 libresolv 时出错

Homebrew OS X OpenCV - 在另一台 Mac 上运行时寻找 dylib

使用自制软件在 Mac OS X 10.9 中构建 OpenCV_Python

在 OS X 上安装 Numba 时出错

Rails:在 OS X 上安装 PG gem - 无法构建本机扩展

在 Mac OS X Lion 上安装 pymssql 时出错