如何在ubuntu18.04中使用clang为Android编译FFmpeg?

如何在ubuntu18.04中使用clang为Android编译FFmpeg?,ubuntu,ffmpeg,clang,Ubuntu,Ffmpeg,Clang,我想用clang编译FFmpeg,因为它更快,但我不知道如何在ubuntu中实现。 NDk版本r16b,ffmpeg版本4.1 我是用gcc做的。这是我的构建脚本,它运行良好 #!/bin/sh NDK=/home/gjy/ndk/android-ndk-r16b-linux-x86_64/android-ndk-r16b ANDROID_VERSION=19 TOOLCHAIN_VERSION=4.9 BUILD_PLATFORM=linux-x86_64 ARCH=arm ANDROID_A

我想用clang编译FFmpeg,因为它更快,但我不知道如何在ubuntu中实现。 NDk版本r16b,ffmpeg版本4.1

我是用gcc做的。这是我的构建脚本,它运行良好

#!/bin/sh
NDK=/home/gjy/ndk/android-ndk-r16b-linux-x86_64/android-ndk-r16b
ANDROID_VERSION=19
TOOLCHAIN_VERSION=4.9
BUILD_PLATFORM=linux-x86_64
ARCH=arm
ANDROID_ARCH_ABI=armeabi
HOST=arm-linux-androideabi
CROSS=arm-linux-androideabi
SYSROOT=${NDK}/platforms/android-${ANDROID_VERSION}/arch-${ARCH}/
PREFIX=$(pwd)/android/${ANDROID_VERSION}/$ANDROID_ARCH_ABI
TOOLCHAIN=${NDK}/toolchains/${HOST}-${TOOLCHAIN_VERSION}/prebuilt/${BUILD_PLATFORM}
CFLAGS="-Os -fpic -march=armv5te -isysroot $NDK/sysroot -I$NDK/sysroot/usr/include/$CROSS -D__ANDROID_API__=$ANDROID_VERSION -U_FILE_OFFSET_BITS"
CROSS_PREFIX=${TOOLCHAIN}/bin/${CROSS}-
build(){
echo "configuring $ANDROID_ARCH_ABI ANDROID_VERSION=$ANDROID_VERSION"
./configure \
    --prefix=$PREFIX \
    --enable-neon \
    --enable-hwaccels \
    --enable-gpl \
    --enable-postproc \
    --enable-shared \
    --enable-jni \
    --enable-mediacodec \
    --enable-decoder=h264_mediacodec \
    --enable-hwaccel=h264_mediacodec \
    --enable-decoder=hevc_mediacodec \
    --enable-decoder=mpeg4_mediacodec \
    --enable-decoder=vp8_mediacodec \
    --enable-decoder=vp9_mediacodec \
    --disable-static \
    --disable-doc \
    --enable-ffmpeg \
    --disable-ffplay \
    --disable-ffprobe \
    --enable-avdevice \
    --disable-doc \
    --disable-symver \
    --cross-prefix=$CROSS_PREFIX \
    --target-os=android \
    --arch=$ARCH \
    --disable-yasm \
    --enable-cross-compile \
    --sysroot=$SYSROOT \
    --extra-cflags="$CFLAGS " \
    --extra-ldflags="$ADDI_LDFLAGS" \
    $ADDITIONAL_CONFIGURE_FLAG
    make clean
    make -j4
    make install
    echo "$ANDROID_ARCH_ABI installed"
}
build
我想知道如何使用叮当友好。我在NDK还是新手,我刚刚开始学习。所以我根本不知道怎么做。 当我试着转成叮当声时,我犯了很多错误。 在尝试了这么多次之后,我用以下问题更新了构建脚本:

然后我从config.log中得到错误信息:

/home/gjy/ndk/android-ndk-r16b-linux-x86_64/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-as -D_ISOC99_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_POSIX_C_SOURCE=200112 -D_XOPEN_SOURCE=600 -DPIC -fPIE -fPIC -ffast-math -funroll-loops -mfloat-abi=softfp -mfpu=vfpv3-d16 -mcpu=armeabi -fPIC -c -o /tmp/ffconf.hfTGr6sO/test.o /tmp/ffconf.hfTGr6sO/test.S
/home/gjy/ndk/android-ndk-r16b-linux-x86_64/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-as: invalid option -- '_'
GNU assembler not found, install/update gas-preprocessor
似乎第一个字符被忽略了。当我尝试时:

/home/gjy/ndk/android-ndk-r16b-linux-x86_64/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-as -fPIC -c -o /tmp/ffconf.jHtqLsFE/test.o /tmp/ffconf.jHtqLsFE/test.S
invalid option -- P

任何主体都可以帮助解决问题吗?

您必须将
--as=$TOOLCHAIN/clang
参数添加到您的配置字符串中,以便使用clang编译汇编代码。

您必须将
--as=$TOOLCHAIN/clang
参数添加到您的配置字符串中,以便使用clang编译汇编代码。

您可以向您的工作站添加更多信息吗?可能是你目前正在做什么?@saikatchakrabortty我已经重新编辑了这个问题以了解更多细节,我希望它能帮助你向你的Quer Station添加更多信息?到目前为止,你可能正在做什么?——@saikatchakrabortty我已经重新编辑了这个问题,以了解更多细节,我希望它能有所帮助
/home/gjy/ndk/android-ndk-r16b-linux-x86_64/android-ndk-r16b/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-as -fPIC -c -o /tmp/ffconf.jHtqLsFE/test.o /tmp/ffconf.jHtqLsFE/test.S
invalid option -- P