0. 序言
- PC操作系統(tǒng):Ubuntu 16.04
- OpenCv版本:4.0
- 交叉工具鏈:arm-linux-gnueabihf,gcc version 5.4.0
- 目標(biāo)平臺(tái):FriendlyARM
- 編譯時(shí)間:20181211
1. 下載OpenCv
地址:https://github.com/opencv/opencv 推薦下載最新版本
為何編譯:OpenCv并沒(méi)有提供應(yīng)用程序安裝包,比如像Android下的apk,Windows下的exe,它只提供了源碼工程,需要我們編譯以后,去執(zhí)行它的入口代碼函數(shù)。
編譯目的:OpenCv是因?yàn)樗锩嬗泻芏嗟膸?kù),這些庫(kù)封裝了我們想要實(shí)現(xiàn)的功能。
2. 下載交叉編譯的ARM庫(kù)
編譯在PC linux X86平臺(tái),編譯運(yùn)行的目標(biāo)平臺(tái)是ARM平臺(tái),這時(shí)候就需要下載ARM庫(kù)所需要的文件資料,相當(dāng)于Android開(kāi)發(fā)的NDK或SDK。目的就是在PC Ubuntu上編譯出來(lái)的OpenCv可以順利跑在ARM平臺(tái)。
① 安裝arm-linux-gcc:
sudo apt-get install gcc-arm-linux-gnueabihf
② 安裝arm-linux-g++:
sudo apt-get install g++-arm-linux-gnueabihf
③ 檢測(cè)是否安裝成功:
終端進(jìn)入/usr/bin,輸入以下命令,出現(xiàn)gcc版本信息,表示安裝成功:
arm-linux-gnueabihf-gcc -v
Using built-in specs.
COLLECT_GCC=arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc-cross/arm-linux-gnueabihf/5/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libitm --disable-libquadmath --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-armhf-cross/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-5-armhf-cross --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-armhf-cross --with-arch-directory=arm --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libgcj --enable-objc-gc --enable-multiarch --enable-multilib --disable-sjlj-exceptions --with-arch=armv7-a --with-fpu=vfpv3-d16 --with-float=hard --with-mode=thumb --disable-werror --enable-multilib --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=arm-linux-gnueabihf --program-prefix=arm-linux-gnueabihf- --includedir=/usr/arm-linux-gnueabihf/include
Thread model: posix
gcc version 5.4.0 20160609 (Ubuntu/Linaro 5.4.0-6ubuntu1~16.04.9)
3. 新建build目錄
mkdir build
說(shuō)明:用于存放編譯好的配置文件等信息
4. 配置工具鏈
① 終端輸入以下命令
cmake-gui
說(shuō)明:如果找不到命令,按照提示安裝命令即可。
② 輸入上述命令后彈出工具鏈配置界面
說(shuō)明:Where is the source code對(duì)應(yīng)opencv的文件夾,Where to build the binaries對(duì)應(yīng)opencv存放編譯好的配置文件等信息的文件夾(剛才創(chuàng)建的build文件夾)
③ 點(diǎn)擊Configure,彈出編譯方式選擇對(duì)話框
說(shuō)明:選擇第四項(xiàng),交叉編譯。
④ 點(diǎn)擊Next
說(shuō)明:Operating System 輸入Linux ;Processor 輸入 arm ;C 輸入arm-linux-gnueabihf-gcc路徑:/usr/bin/arm-linux-gnueabihf-gcc;C++路徑:/usr/bin/arm-linux-gnueabihf-g++;Target Root輸入:/usr/arm-linux-gnueabihf/lib
⑤ 點(diǎn)擊Finish
⑥ Search位置輸入Z,把zip庫(kù)選中(Ubuntu 16.04 不選擇會(huì)報(bào)錯(cuò))
BUILD_ZLIB
⑦ Search位置輸入install,修改下opencv編譯后存放的目錄路徑
CMAKE_INSTALL_PREFIX
說(shuō)明:這里隨便選擇一個(gè)空的目錄即可。
/home/ruzhi/fukaq
⑧ 點(diǎn)擊Configure
Configuring done
⑨ 點(diǎn)擊Generate
Generating done
說(shuō)明:這個(gè)時(shí)候就可以關(guān)閉對(duì)話框了
5. 編譯項(xiàng)目
進(jìn)入build目錄,執(zhí)行編譯
make -j8
[100%] Built target opencv_test_gapi
make install
-- Set runtime path of "/home/ruzhi/fukaq/bin/opencv_version" to "/home/ruzhi/fukaq/lib"
說(shuō)明:存放編譯后的opencv執(zhí)行文件的目錄出現(xiàn)文件表示編譯完成。
6. 后續(xù)
如果大家喜歡這篇文章,歡迎點(diǎn)贊!
如果想看更多 OpenCv或嵌入式開(kāi)發(fā) 方面的技術(shù),歡迎關(guān)注!