2013-12-16 20 views
5

私はヒーローにopencvをインストールしようとしています。私はheroku-anvilをインストールに使用しようとしましたが、今はbashシェル経由でopencvをインストールしようとしています。まず、私はcmakeのがインストールされているが、私はmake OpenCVのにしようとしたとき、私は、必然的に次のエラーを取得する:OpenCV Python Linker Error

# connect to bash shell 

heroku run bash 
cd /tmp 

# Downloading and Installing cmake: 

curl -s http://www.cmake.org/files/v2.8/cmake-2.8.12.1.tar.Z > cmake.tar.gz 
tar zxf cmake.tar.gz 
cd cmake-2.8.12.1/ 
./bootstrap 
make 
make install 

# Download and Install OpenCV 

curl -s https://s3.amazonaws.com/nerdglasses/opencv/OpenCV-2.4.2.tar.bz2 > opencv.tar.gz 
tar xf opencv.tar.gz 
cd OpenCV-2.4.2/ 
../cmake-2.8.12.1/bin/cmake -DBUILD_SHARED_LIBS=NO -DCMAKE_SHARED_LINKER_FLAGS="-fPIC" -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DBUILD_PERF_TESTS=OFF -DWITH_OPENEXR=OFF -DCMAKE_FIND_ROOT_PATH=/app/.heroku -DCMAKE_INSTALL_PREFIX=/app/.heroku . 
make # ERROR HERE 

この問題を解決する方法を誰もが知っている:ここで

Linking CXX shared library ../../lib/cv2.so 
/usr/bin/ld: /usr/local/lib/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC 
/usr/local/lib/libpython2.7.a: could not read symbols: Bad value 
collect2: ld returned 1 exit status 
make[2]: *** [lib/cv2.so] Error 1 
make[1]: *** [modules/python/CMakeFiles/opencv_python.dir/all] Error 2 
make: *** [all] Error 2 

は、私が使用している正確なコマンドは、 ?または、python Webアプリケーションのherokuにopencvをインストールするより良い方法があるのでしょうか?

+1

CMakeコマンドにタイプミスがあるようです。 'DCMAKE_SHARED_LINKER_FLAGS =" - fPIC "'引数の前に '-'がありません。 – Fraser

+0

'DCMAKE_SHARED_LINKER_FLAGS =" - fPIC "'を試してみるべきですか? –

+0

いいえ - 申し訳ありません - 私は '-DCMAKE_SHARED_LINKER_FLAGS =" - fPIC "'を意味しました。 – Fraser

答えて

2

共有と静的な方法でPythonを再インストールする必要があります。

まず、Pythonソースファイルをもう一度ダウンロードしてください。

、その後..あなたがこの問題を解決するかもしれないようにし

./configure --enable-shared --enable-static 
make 
make install 

あなたが知りたいと思うリンクは次のとおりです。

Installing OpenCV with python module on CentOS goes wrong

0

を結ぶカフェとOpenCVのpythonののインストール中に、同じ問題は、私は以来、--enable-共有オプションで再インストールするのpythonにしたくなかったLinuxのミント17.3で私が直面してPythonのネイティブインストールに依存するパッケージがかなりありました。

On digging further found that two version's of python were installed in my system one in path /usr/local/lib/python2.7 [built using python download from official website] and other in path /usr/lib/python2.7 [installed with sudo apt-get install/ package manager]

pythonの設定時に共有が有効になっていないため、公式サイトからのインストールは位置独立コードではありません。 [PIC、コンパイラフラグを使用する必要があります]。

でもそこには運がなかったとののpython以来-fPIC使用した後:/usr/local/lib/python2.7は私のために有用ではありません、コマンド

sudo rm -rf /usr/local/lib/python2.7

の下でそれを削除することを決めましたVoila!それは今働く。これにより、Pythonはパッケージのインストールに基づいているため、位置独立コードとすることができました。