标签:nal sha mil ogr 定义 option linux tom oat
使用llvm/clang编译只需做以下几步即可:
1 --- a/configure 2 +++ b/configure 3 @@ -345,6 +345,7 @@ Toolchain options: 4 --cpu=CPU select the minimum required CPU (affects 5 instruction selection, may crash on older CPUs) 6 --cross-prefix=PREFIX use PREFIX for compilation tools [$cross_prefix] 7 + --android-cross-prefix=PREFIX use PREFIX for compilation tools [$android_cross_prefix] 8 --progs-suffix=SUFFIX program name suffix [] 9 --enable-cross-compile assume a cross-compiler is used 10 --sysroot=PATH root of cross-build tree 11 @@ -2441,6 +2442,7 @@ CMDLINE_SET=" 12 objcc 13 cpu 14 cross_prefix 15 + android_cross_prefix 16 custom_allocator 17 cxx 18 dep_cc 19 @@ -4181,15 +4183,27 @@ if test -n "$cross_prefix"; then 20 enable cross_compile 21 fi 22 23 +if test "$target_os" = android; then 24 + test -n "$android_cross_prefix" || 25 + die "Must set android_cross_prefix for compile android" 26 + enable cross_compile 27 +fi
最后这个 if test 是检查有没有设置刚才添加的选项
除此还要设置交叉编译器的路径,涉及到四个选项
cc_default clang 的路径
cxx_default clang++ 的路径 以上两个需要用到
android_cross_prefix 选项,因为在ndk里,clang的路径里带有armv7a-linux-androideabi29- 和gcc(arm-linux-androideabi-) 的不一样
ar_default nm_default 修改代码如下:
1 set_default target_os 2 if test "$target_os" = android; then 3 cc_default="clang" 4 + cxx_default="clang++" 5 + cc_default="${android_cross_prefix}${cc_default}" 6 + cxx_default="${android_cross_prefix}${cxx_default}" 7 + ar_default="${cross_prefix}${ar_default}" 8 + nm_default="${cross_prefix}${nm_default}" 9 +else 10 + ar_default="${cross_prefix}${ar_default}" 11 + cc_default="${cross_prefix}${cc_default}" 12 + cxx_default="${cross_prefix}${cxx_default}" 13 + nm_default="${cross_prefix}${nm_default}" 14 fi 15 16 -ar_default="${cross_prefix}${ar_default}" 17 -cc_default="${cross_prefix}${cc_default}" 18 -cxx_default="${cross_prefix}${cxx_default}" 19 -nm_default="${cross_prefix}${nm_default}"
1 #!/bin/bash 2 #设置临时目录,不是必须的,不设置的话,会自己在系统的temp目录下生成一个, 设置的话,需要在ffmpeg的根目录下创建一个ffmpegtemp文件夹 3 export TMPDIR=D:/FFMPEG/FFmpeg/ffmpegtemp 4 5 #设置ndk目录 6 NDK=D:/android/sdk/ndk-bundle 7 8 #ar nm 的prefix 9 PLATFORM=arm-linux-androideabi 10 11 #llvm toolchain路径 12 TOOLCHAIN=$NDK/toolchains/llvm/prebuilt/windows-x86_64 13 14 #sysroot 这个一定要设置成 ndk的llvm 路径下的 sysroot 15 SYSROOT=$TOOLCHAIN/sysroot 16 17 #ASM 路径, 同上必须是llvm 目录下的 asm 18 ASM=$SYSROOT/usr/include/$PLATFORM 19 20 #完整的 cross prefix 21 CROSS_PREFIX=$TOOLCHAIN/bin/$PLATFORM- 22 23 #专门给ndk clang/clang++ 的 cross prefix 24 ANDROID_CROSS_PREFIX=$TOOLCHAIN/bin/armv7a-linux-androideabi29- 25 26 function build_one 27 { 28 ./configure 29 --prefix=$PREFIX 30 --enable-shared 31 --disable-static 32 --disable-doc 33 --disable-ffmpeg 34 --disable-ffplay 35 --disable-ffprobe 36 --disable-avdevice 37 --disable-doc 38 --disable-symver 39 --cross-prefix=$CROSS_PREFIX 40 --android-cross-prefix=$ANDROID_CROSS_PREFIX 41 --target-os=android 42 --arch=arm 43 --enable-cross-compile 44 --sysroot=$SYSROOT 45 --extra-cflags="-I$ASM -isysroot $SYSROOT -Os -fpic" 46 47 $ADDITIONAL_CONFIGURE_FLAG 48 49 make clean 50 make -j4 51 make install 52 } 53 54 # arm v7vfp 55 CPU=armv7-a 56 OPTIMIZE_CFLAGS="-mfloat-abi=softfp -mfpu=vfp -marm -march=$CPU " 57 PREFIX=./android/$CPU-vfp 58 ADDITIONAL_CONFIGURE_FLAG= 59 build_one
标签:nal sha mil ogr 定义 option linux tom oat
原文地址:https://www.cnblogs.com/tplusy/p/11012149.html