2013-12-16 187 views
5

我一直在嘗試在heroku上安裝opencv無濟於事。我已經嘗試過使用heroku-anvil進行安裝,現在正嘗試通過bash shell安裝opencv。首先,我安裝的CMake但後來當我嘗試make OpenCV的我不可避免地出現以下錯誤:OpenCV Python鏈接器錯誤

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 

下面是我使用的確切命令:

# 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 

任何人都知道如何解決這一問題?或者,如果有更好的方式來獲取openkuv安裝在Heroku上的Python Web應用程序?

+1

看起來您的CMake命令中存在拼寫錯誤。你似乎在DCMAKE_SHARED_LINKER_FLAGS =「 - fPIC」參數前面缺少一個'-'。 – Fraser

+0

所以我應該嘗試'DCMAKE_SHARED_LINKER_FLAGS =「 - fPIC」'? –

+0

不 - 對不起 - 我的意思是'-DCMAKE_SHARED_LINKER_FLAGS =「 - fPIC」' – Fraser

回答

0

同樣的問題上Linux Mint的17.3面對我,而安裝來自Caffe和OpenCV蟒蛇

我不想重新安裝蟒蛇加上--enable-共享的選擇,因爲有很多包依賴於本機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]

從官網安裝不與位置無關的代碼,因爲能夠共享蟒蛇的配置過程中未提供。 [PIC,需要使用編譯器標誌]。

即使使用-fPIC沒有運氣,因爲蟒蛇在後:/usr/local/lib/python2.7是不是對我有用,決定與刪除它下面的命令

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

瞧!它現在有效。這允許python是位置獨立的代碼,因爲它基於軟件包安裝。