下载python2.2源码,执行cmake得到makefile,执行make.在编译到80%左右会出现错误如下:
[ 81%] Generating generated0.i
Traceback (most recent call last):
File "/usr/local/src/opencv/OpenCV-2.2.0/modules/python/gen.py", line 43, in ?
if True in has_init and not all(has_init[has_init.index(True):]):
NameError: name 'all' is not defined
make[2]: *** [modules/python/generated0.i] Error 1
make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error 2
make: *** [all] Error 2
这个是因为python的问题。我在ubuntu 10.04和windows 7平台上均使用的是cmake的GUI版本,自动的configure和generate,得到的makefile直接执行没有这个问题。但是,现在我使用的是ssh远程登录到cent os5.6,没有办法使用带GUI的CMake。所以只能是去除python模块的支持。使用cmake命令行,添加如下参数:
cmake -D BUILD_NEW_PYTHON_SUPPORT=NO ..
这样即可以顺利编译出OpenCV 2.2版本,不过没有python的绑定了。
另外,在centos上默认的python版本是2.4.3,我们可以升级python到2.6.5或者更高。
过程如下:
1. 下载python 2.6.5源码
wget http://www.python.org/ftp/python/2.6.5/Python-2.6.5.tar.bz2
2. 编译安装
tar jxvf Python-2.6.5.tar.bz2
cd Python-2.6.5
./configure
make && make install
Python默认安装目录在/usr/local/lib/python2.6
3. 更改系统的默认python版本
作一个软链接:
mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/local/bin/python2.6 /usr/bin/python
敲入 python -V 查看是否成功
4. 更新了python的版本以后,yum不能工作了,因为yum依赖的python版本是2.4.3。
解决如下:
vim /usr/bin/yum
将首行的 !#/usr/bin/python 修改为 !#/usr/bin/python2.4
保存ok.