下載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.