B0宏

在编译android平台用的ffmpeg时,抛出这样一个错误:

这句代码怎么看都找出有毛病,为什么B0会报错? 翻看aaccoder.c,也没有发现问题。为什么B0就成了一个常量数字,这里只有一个可能,B0在某处被宏定义了。那么将B0替换名称为BB0,果然顺利通过编译。

但是又不久又报出错误:

又是B0,这次是y##B0,宏展开后是y000000而不是代码希望的yB0,所以报错。B0在asm/termbits.h或asm-generic/termbits.h中被宏定义了

这个B0是linux平台下都定义了的宏,只要你的代码需要引用asm目录下的头文件。解决也就是在报错的源文件将B0给undef。

 

编译配置参考 http://blog.csdn.net/gobitan/article/details/22750719,这是别人的劳动。

下面是引用它人的脚本代码

#!/bin/bash
NDK=/home/dennis/android-ndk-r9d
SYSROOT=$NDK/platforms/android-9/arch-arm/
TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.8/prebuilt/linux-x86_64

function build_one
{
./configure \
    --prefix=$PREFIX \
    --enable-shared \
    --disable-static \
    --disable-doc \
    --disable-ffserver \
    --enable-cross-compile \
    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \
    --target-os=linux \
    --arch=arm \
    --sysroot=$SYSROOT \
    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
}
CPU=arm
PREFIX=$(pwd)/android/$CPU
ADDI_CFLAGS="-marm"
build_one

当然了,最好将ndk的toolchain脚本里的一些编译选项也加入到上面的脚本,还有不要忘记pie选项。

posted on 2017-11-20 11:26  bbqz007  阅读(542)  评论(0编辑  收藏  举报