1. 交叉编译ffmpeg
(base) mahxn0@toy:~/workspace/rv1126B/FFmpeg-n7.0$ cat build.sh
export TOOLCHAIN=/opt/rv1126B/arm-rockchip1240-linux-gnueabihf
export SYSROOT=$TOOLCHAIN/arm-rockchip1240-linux-gnueabihf/sysroot
export CROSS_PREFIX=$TOOLCHAIN/bin/arm-rockchip1240-linux-gnueabihf-
export PREFIX=/opt/ffmpeg-arm32
./configure \
--prefix=$PREFIX \
--arch=arm \
--cpu=armv7-a \
--target-os=linux \
--cross-prefix=$CROSS_PREFIX \
--enable-cross-compile \
--enable-shared \
--disable-static \
--enable-pic \
--enable-gpl \
--enable-nonfree \
--enable-small \
--enable-neon \
--enable-asm \
--disable-debug \
--disable-doc \
--extra-cflags="-mfpu=neon -mfloat-abi=hard --sysroot=$SYSROOT" \
--extra-ldflags="--sysroot=$SYSROOT"
2. 交叉编译opencv
- 设置ffmpeg的环境变量
export PKG_CONFIG_PATH=/opt/ffmpeg-arm32/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_LIBDIR=/opt/ffmpeg-arm32/lib:$PKG_CONFIG_LIBDIR
export LD_LIBRARY_PATH=/opt/ffmpeg-arm32/lib:$LD_LIBRARY_PATH
- 生成tool_chain.cmake
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_PROCESSOR armv7)
SET(CMAKE_SYSROOT /opt/rv1126B/arm-rockchip1240-linux-gnueabihf/arm-rockchip1240-linux-gnueabihf/sysroot)
SET(CMAKE_C_COMPILER /opt/rv1126B/arm-rockchip1240-linux-gnueabihf/bin/arm-rockchip1240-linux-gnueabihf-gcc)
SET(CMAKE_CXX_COMPILER /opt/rv1126B/arm-rockchip1240-linux-gnueabihf/bin/arm-rockchip1240-linux-gnueabihf-g++)
SET(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
- 编译
cmake -DCMAKE_INSTALL_PREFIX=../install -DENABLE_NEON=ON -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.12.0/modules -DWITH_FFMPEG=ON -DCMAKE_TOOLCHAIN_FILE=../tool_chain.cmake -DFFMPEG_INCLUDE_DIR=/opt/ffmpeg-arm32/include -DFFMPEG_LIB_DIR=/opt/ffmpeg-arm32/lib -DCMAKE_CXX_FLAGS="-march=armv7-a" -DCMAKE_C_FLAGS="-march=armv7-a" ..