1. 交叉编译ffmpeg
bash
(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
#FOR STATIC
#./configure \
# --prefix=$PREFIX \
# --arch=arm \
# --target-os=linux \
# --cross-prefix=$CROSS_PREFIX \
# --enable-cross-compile \
# --enable-gpl \
# --enable-nonfree \
# --enable-pic \
# --enable-static \
# --disable-shared \
# --disable-doc \
# --disable-debug \
# --enable-small \
# --enable-neon \
# --cpu=armv7-a \
# --extra-cflags="-mfpu=neon -mfloat-abi=hard" \
# --extra-ldflags="" \
# --enable-asm
#FOR SHARED
./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的环境变量
bashexport 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
bashSET(CMAKE_SYSTEM_NAME Linux) SET(CMAKE_SYSTEM_PROCESSOR armv7) #SET(CMAKE_SYSROOT /opt/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc) #SET(CMAKE_C_COMPILER /opt/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc) #SET(CMAKE_CXX_COMPILER /opt/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-g++) #FOR ARM 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) -
编译
bashcmake -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" ..