一、編譯的環(huán)境
- Ubuntu20.04.3 + NDK-r22版本 + Cmake 3.18.1版本 + ffmpeg-4.0.6
- Ubuntu20.04.3系統(tǒng),是用VirtualBox安裝的。
- VirtualBox百度就可以免費下載驶乾。
- Ubuntu20.04.3系統(tǒng)可以到,華為OS鏡像免費下載:https://mirrors.huaweicloud.com/
- 不會用VirtualBox安裝Ubuntu的自己百度冠句。
二轻掩、NDK下載
- 下載目錄(自己的就行):/home/lven/tool/
- 下載地址:wget https://dl.google.com/android/repository/android-ndk-r22-linux-x86_64.zip
備用版本:wget https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
備用版本:wget https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
備用版本:wget https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
- 解壓:unzip android-ndk-r22-linux-x86_64.zip
三、Cmake 3.18.1安裝
- 下載目錄(自己的就行):/home/lven/tool/
- 下載地址:wget https://github.com/Kitware/CMake/releases/download/v3.18.1/cmake-3.18.1-Linux-x86_64.tar.gz
- 解壓:tar zxvf cmake-3.18.1-Linux-x86_64.tar.gz
- 配置軟連接:ln -sf /home/lven/tool/cmake-3.18.1-Linux-x86_64/bin/* /usr/bin/
四懦底、ffmpeg下載(下載目錄自己定)
- ffmpeg所有下載地址:http://ffmpeg.org/releases 自己找到想編譯的版本
- ffmpeg-4.0.6下載地址:wget http://ffmpeg.org/releases/ffmpeg-4.0.6.tar.bz2
- 解壓:tar zxvf ffmpeg-4.0.6.tar.bz2
- cd到ffmpeg-4.0.6目錄下創(chuàng)建編譯解本 affmpegv7a.sh和affmpegv8a.sh
- 執(zhí)行解本:sudo sh affmpegv7a.sh 或者 sudo sh affmpegv8a.sh
五、affmpegv7a.sh編譯腳本
#!/bin/bash
## NDK路徑,換成自己的路徑聚唐,就改這里就行了丐重,其它的看自己需求
NDK=/home/lven/tool/android-ndk-r22
API=21
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT=$TOOLCHAIN/sysroot
## 輸出路徑
PRFIX="$(pwd)/android/armeabi-v7a"
ARCH=arm
CPU=armv7-a
V7ABI=armv7a-linux-androideabi
CC=$TOOLCHAIN/bin/$V7ABI$API-clang
CXX=$TOOLCHAIN/bin/$V7ABI$API-clang++
ARMABI=arm-linux-androideabi
CROSS_PREFIX=$TOOLCHAIN/bin/$ARMABI-
# --disable-indev=v4l2 # error
./configure \
--disable-asm \
--disable-programs \
--enable-shared \
--disable-static \
--enable-cross-compile \
--target-os=android \
--extra-cflags="-Os -fpic -DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD" \
--prefix=$PRFIX \
--arch=$ARCH \
--cpu=$CPU \
--sysroot=$SYSROOT \
--cross-prefix=$CROSS_PREFIX \
--cc=$CC \
--cxx=$CXX
make clean
make -j8
make install
- --extra-cflags="-Os -fpic -DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD" 解決錯誤:libavdevice/v4l2.c:135:9: error: assigning to 'int (*)
- CROSS_PREFIX得用arm-linux-androideabi-
六、affmpegv8a.sh編譯腳本
#!/bin/bash
## NDK路徑杆查,換成自己的路徑扮惦,就改這里就行了,其它的看自己需求
NDK=/home/lven/tool/android-ndk-r22
API=21
TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/linux-x86_64
SYSROOT=$TOOLCHAIN/sysroot
## 輸出路徑
PRFIX="$(pwd)/android/arm64-v8a"
ARCH=arm64
CPU=armv8a
V8ABI=aarch64-linux-android
CC=$TOOLCHAIN/bin/$V8ABI$API-clang
CXX=$TOOLCHAIN/bin/$V8ABI$API-clang++
CROSS_PREFIX=$TOOLCHAIN/bin/$V8ABI-
# --disable-indev=v4l2 # error
./configure \
--disable-asm \
--disable-programs \
--enable-shared \
--disable-static \
--enable-cross-compile \
--target-os=android \
--extra-cflags="-Os -fpic -DBIONIC_IOCTL_NO_SIGNEDNESS_OVERLOAD" \
--prefix=$PRFIX \
--arch=$ARCH \
--cpu=$CPU \
--sysroot=$SYSROOT \
--cross-prefix=$CROSS_PREFIX \
--cc=$CC \
--cxx=$CXX
make clean
make -j8
make install
- 仔細看$NDK/toolchains/llvm/prebuilt/linux-x86_64/sysroot/bin下的編譯工具類亲桦。
七崖蜜、總結(jié)
- 本人就編譯v7a和v8a版本,目前用v7a就夠了客峭。
- 編譯時遇到很坑豫领,上面解本是本人編譯成功的解本,如果你編譯不成功也正常舔琅。
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者