x264的交叉编译
源码地址
编译条件
- virtualbox 安装ubuntu
- windows 安装 virtualbox
配置configure
交叉编译需要配置jdk,ndk。 可以下载Android Studio,
配置jdk
export PATH=$PATH:/home/lijunjie/dev/studio/android-studio/jbr/bin
export PATH=$PATH:/home/lijunjie/Android/Sdk/platform-tools
export NDK_ROOT=/home/lijunjie/Android/Sdk/ndk/20.1.5948944
export TOOLCHAIN=$NDK_ROOT/toolchains/llvm/prebuilt/linux-x86_64/
增加配置参数
- prefix 指定编译输出参数
- host = aarch64-linux-android 交叉编译的目标平台
- --extra-cflags 设置-I 参数
- --cross-prefix 设置编译参数前缀,编译现在需要设置CC CXX,其他编译命令需要增加这个前缀来完成调用
- --sysroot 编译需要用到的头文件
#!/bin/bash
API=21
export CC=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang
export CXX=$TOOLCHAIN/bin/armv7a-linux-androideabi$API-clang++
./configure --prefix=./out \
--disable-cli \
--enable-static \
--enable-pic \
--disable-asm \
--host=aarch64-linux-android \
--extra-cflags=--target=aarch64-none-linux-android24 -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fno-limit-debug-info -fPIC \
--cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
--sysroot=$TOOLCHAIN/sysroot
- make install
- extra-cflags 参数可以用android studio新建一个native工程,将build.ninja和rules.ninja中的编译参数放到这块。
windows中调用virtualbox
- 在virtualbox的设置中增加分享目录a,
- 在ubuntu中可以访问/media/a
- 如果权限问题,需要增加自己的账号的vboxsf目录
sudo usermod -a -G vboxsf lijunjie
android studio中调用libx264.a
- 复制 out/ 目录android studio的cpp/x264-v8
- 修改cmakelist.txt
- 增加so路径
- 增加header路径
- 增加link路径
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/x264-v8/lib/")
include_directories(${CMAKE_SOURCE_DIR}/x264-v8/include)
# Specifies libraries CMake should link to your target library. You
# can link libraries from various origins, such as libraries defined in this
# build script, prebuilt third-party libraries, or Android system libraries.
target_link_libraries(${CMAKE_PROJECT_NAME}
# List libraries link to the target library
android
x264
log)
在cpp中增加调用x264.h
x264_param_t param; x264_param_default( ¶m );