ubuntu编译libopencv_freetype.so(二)
在编译完hargbuzz和freetype后,接下来正式编译opencv,我是交叉编译,命令参考链接如下:
https://www.jianshu.com/p/5957cfa1e315
https://blog.youkuaiyun.com/weixin_43400299/article/details/134322476
https://blog.youkuaiyun.com/chenguanging080/article/details/131324678
编译命令
1.修改toolchain
在/platforms/linux路径下aarch64-gnu.toolchain.cmake,修改后如下:
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(GCC_COMPILER_VERSION "" CACHE STRING "GCC Compiler version")
SET (CMAKE_C_COMPILER "/home/sanyi/zlg/rockit_videolib_new/host/bin/aarch64-buildroot-linux-gnu-gcc")
SET (CMAKE_CXX_COMPILER "/home/sanyi/zlg/rockit_videolib_new/host/bin/aarch64-buildroot-linux-gnu-g++")
set(GNU_MACHINE "aarch64-linux-gnu" CACHE STRING "GNU compiler triple")
include("${CMAKE_CURRENT_LIST_DIR}/arm.toolchain.cmake")
2.cmake命令
在opencv目录下新建build文件夹,进入build,然后输入命令
cmake -D CMAKE_INSTALL_PREFIX=/home/sanyi/cc/opencv/install/opencv -DCMAKE_TOOLCHAIN_FILE=../platforms/linux/aarch64-gnu.toolchain.cmake -D OPENCV_EXTRA_MODULES_PATH=/home/sanyi/cc/opencv/source/opencv/opencv_contrib/modules/ -D BUILD_opencv_freetype=ON -D WITH_FREETYPE=ON -D BUILD_SHARED_LIBS=ON -D WITH_HARDBUZZ=ON -D BUILD_opencv_hardbuzz=ON -DFREETYPE_LIBRARIES=/home/sanyi/cc/opencv/install/freetype/lib/libfreetype.so \
-DFREETYPE_INCLUDE_DIRS=/home/sanyi/cc/opencv/install/freetype/include/freetype2 \
-DHARFBUZZ_FOUND=ON \
-DHARFBUZZ_LIBRARIES=/home/sanyi/cc/opencv/install/harfbuzz/lib/libharfbuzz.so \
-DHARFBUZZ_INCLUDE_DIRS=/home/sanyi/cc/opencv/install/harfbuzz/include/harfbuzz ..
注意:一定要确保freetype2和harfbuzz是yes,否则是不会编译libopencv_freetype.so的
然后输入make -j4&&make install即可。期间会出现很多错误,下面记录。
可能出现的错误
1.freetype模块报找不到ft2build.h错误
/home/sanyi/cc/opencv/source/opencv/opencv_contrib/modules/freetype/src/freetype.cpp:50:10: 致命错误: ft2build.h:没有那个文件或目录
修改/home/sanyi/cc/opencv/source/opencv/opencv_contrib/modules/freetype/CMakeLists.txt,把编译好的freetype和harfbuzz的include路径加到ocv_include_directories
2.gapi模块报找不到ft2build.h错误
/home/sanyi/cc/opencv/source/opencv/modules/gapi/src/api/ft_render_priv.hpp:15:10: 致命错误: ft2build.h:没有那个文件或目录
修改/home/sanyi/cc/opencv/source/opencv//modules/gapi/CMakeLists.txt,把编译好的freetype的include和lib路径加到ocv_target_include_directories和ocv_target_link_libraries
3.找不到features2d
/home/sanyi/cc/opencv/source/opencv/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp:51:10: 致命错误: features2d/test/test_detectors_regression.impl.hpp:没有那个文件或目录
把opencv的modules文件夹下的 features2d文件夹拷贝到build路径即可