2018/5/31

opencv library build from source.

opencv 的 install instruction 很隱晦。
到 document 去 search install,然後選 install_Linux 部份...
tutorial_linux_install

以下照做..
..git clone, cmake, make, make install.. 過然就 OK 了.
-- 為了避免跟 distribution 安裝的opencv library 衝突,所以改INSTALL_PATH 到 ~/opencvlib 下。

source code 的 samples/cpp/example_cmake 下有一個 Makefile 可以作為 build app 的標準 Makefile
CXX ?= g++

CXXFLAGS += -c -Wall $(shell pkg-config --cflags opencv)
LDFLAGS += $(shell pkg-config --libs --static opencv)

all: opencv_example

opencv_example: example.o; $(CXX) $< -o $@ $(LDFLAGS)

%.o: %.cpp; $(CXX) $< -o $@ $(CXXFLAGS)

clean: ; rm -f example.o opencv_example
build Z 的 sample 結果出現 xfeature2d.hpp 找不到,這是在 opencv_contrib 裡...
所以,git clone https://github.com/opencv/opencv_contrib.git

build contrib module 的 option 有在說明的後面...
重新安排一次..
mkdir opencv && cd opencv
git clone https://github.com/opencv/opencv
git clone https://github.com/opencv/opencv_contrib
create 安裝的 folder:
mkdir opencvlib
cd opencv
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=release -D CMAKE_INSTALL_PREFIX=/home/charles-chang/opencv/opencvlib -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ ..

另外,如果是gcc 6.X 配上 opencv3.1.0,還要加上 -DENABLE_PRECOMPILED_HEADERS=OFF 這個 option,否則會出現 stdlib.h not found 的 error。(ref)
還要配上hdf5.h not found 增加定義..
這樣 make OK,但是 build 自己的 code 的時候,會出現 libippicv 找步道,就要照這一篇,再增加定義....
最後,cmake 的 command option 是...
cmake -D CMAKE_BUILD_TYPE=release -D CMAKE_INSTALL_PREFIX=/home/charles-chang/opencv/lib3.1.0 -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules/ -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_IPP=ON -D INSTALL_CREATE_DISTRIB=ON ..
這樣 build 出來的 opencv 已經可以正常 build application 了。
但是因為是 local install。所以執行 build 好的 application 時,會出現 so 找不到的錯誤。
就要設 LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/charles-chang/opencv/lib3.1.0/lib/
之後再 run 就 OK 了。


build opencv static library
build static library

沒有留言:

張貼留言