gpt4 book ai didi

android - ffmpeg - android ndk 构建汇编程序消息错误指令

转载 作者:行者123 更新时间:2023-12-04 23:15:54 25 4
gpt4 key购买 nike

我使用以下改编自 Telegram 的构建脚本编译了最新的 ffmpeg 源代码:

#!/bin/bash
#apply fix http://permalink.gmane.org/gmane.comp.video.ffmpeg.devel/203198

function build_one {

echo "Cleaning..."
make clean

echo "Configuring..."

./configure \
--cc=$CC \
--nm=$NM \
--enable-stripping \
--arch=$ARCH \
--cpu=$CPU \
--target-os=linux \
--enable-cross-compile \
--yasmexe=$NDK/prebuilt/darwin-x86_64/bin/yasm \
--prefix=$PREFIX \
--enable-pic \
--disable-shared \
--enable-static \
--cross-prefix=$CROSS_PREFIX \
--sysroot=$PLATFORM \
--extra-cflags="-Os -DANDROID $OPTIMIZE_CFLAGS -fPIE -pie --static" \
--extra-ldflags="-Wl,-rpath-link=$PLATFORM/usr/lib -L$PLATFORM/usr/lib -nostdlib -lc -lm -ldl" \
--extra-libs="-lgcc" \
\
--enable-version3 \
--enable-gpl \
\
--disable-doc \
--disable-avx \
\
--disable-everything \
--disable-network \
--disable-zlib \
--disable-debug \
--disable-programs \
--disable-network \
\
--enable-pthreads \
--enable-protocol=file \
--enable-decoder=h264 \
--enable-decoder=gif \
--enable-demuxer=mov \
--enable-demuxer=gif \
--enable-hwaccels \
--enable-runtime-cpudetect \
--enable-asm \
$ADDITIONAL_CONFIGURE_FLAG

#echo "continue?"
#read
make -j8 install

}

NDK=~/Downloads/android-ndk-r12b/

#arm platform
PLATFORM=$NDK/platforms/android-9/arch-arm
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/darwin-x86_64
LD=$PREBUILT/bin/arm-linux-androideabi-ld
AR=$PREBUILT/bin/arm-linux-androideabi-ar
NM=$PREBUILT/bin/arm-linux-androideabi-nm
GCCLIB=$PREBUILT/lib/gcc/arm-linux-androideabi/4.9/libgcc.a
ARCH=arm
CC=$PREBUILT/bin/arm-linux-androideabi-gcc
CROSS_PREFIX=$PREBUILT/bin/arm-linux-androideabi-

#arm v5
CPU=armv5te
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG="--disable-armv6 --disable-armv6t2 --disable-vfp --disable-neon"
build_one

#arm v7n
CPU=armv7-a
OPTIMIZE_CFLAGS="-marm -march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG=--enable-neon
build_one

#x86 platform
PLATFORM=$NDK/platforms/android-9/arch-x86
PREBUILT=$NDK/toolchains/x86-4.9/prebuilt/darwin-x86_64
LD=$PREBUILT/bin/i686-linux-android-ld
AR=$PREBUILT/bin/i686-linux-android-ar
NM=$PREBUILT/bin/i686-linux-android-nm
GCCLIB=$PREBUILT/lib/gcc/i686-linux-android/4.9/libgcc.a
ARCH=x86
CC=$PREBUILT/bin/i686-linux-android-gcc
CROSS_PREFIX=$PREBUILT/bin/i686-linux-android-

CPU=i686
OPTIMIZE_CFLAGS="-march=$CPU"
PREFIX=./android/$CPU
ADDITIONAL_CONFIGURE_FLAG="--disable-mmx --disable-yasm"
build_one

我将生成的android/文件夹的内容复制到jni/ffmpeg/。
然后我尝试进行 ndk-build,但失败并出现错误。

Android.mk 文件如下:
LOCAL_PATH := $(call my-dir)

LOCAL_MODULE := avutil
LOCAL_MODULE_FILENAME := libavutil
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libavutil.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := avformat
LOCAL_MODULE_FILENAME := libavformat
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libavformat.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := avcodec
LOCAL_MODULE_FILENAME := libavcodec
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libavcodec.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := avdevice
LOCAL_MODULE_FILENAME := libavdevice
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libavdevice.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := avfilter
LOCAL_MODULE_FILENAME := libavfilter
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libavfilter.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := postproc
LOCAL_MODULE_FILENAME := libpostproc
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libpostproc.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := swresample
LOCAL_MODULE_FILENAME := libswresample
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libswresample.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_MODULE := swscale
LOCAL_MODULE_FILENAME := libswscale
LOCAL_SRC_FILES := ./ffmpeg/armv7-a/lib/libswscale.a
include $(PREBUILT_STATIC_LIBRARY)


include $(CLEAR_VARS)
LOCAL_PRELINK_MODULE := false

LOCAL_MODULE := ffmpeg
LOCAL_CFLAGS := -w -std=c11 -Os -DNULL=0 -DSOCKLEN_T=socklen_t -DLOCALE_NOT_USED -D_LARGEFILE_SOURCE=1 -D_FILE_OFFSET_BITS=64
LOCAL_CFLAGS += -Drestrict='' -D__EMX__ -DOPUS_BUILD -DFIXED_POINT -DUSE_ALLOCA -DHAVE_LRINT -DHAVE_LRINTF -fno-math-errno
LOCAL_CFLAGS += -DANDROID_NDK -DDISABLE_IMPORTGL -fno-strict-aliasing -fprefetch-loop-arrays -DAVOID_TABLES -DANDROID_TILE_BASED_DECODE -DANDROID_ARMV6_IDCT -ffast-math -D__STDC_CONSTANT_MACROS
LOCAL_CPPFLAGS := -DBSD=1 -ffast-math -Os -funroll-loops -std=c++11
LOCAL_LDLIBS := -ljnigraphics -llog -lz -latomic
LOCAL_STATIC_LIBRARIES := avformat avcodec avutil avfilter avdevice postproc swresample swscale
LOCAL_SRC_FILES := ffmpeg.c

include $(BUILD_SHARED_LIBRARY)

抛出的错误是:

[armeabi-v7a] Compile thumb : ffmpeg <= ffmpeg.c /var/folders/2p/0jqlz1c94t537_53qn3h8v9h0000gn/T//cc8Tnpth.s: Assembler messages: /var/folders/2p/0jqlz1c94t537_53qn3h8v9h0000gn/T//cc8Tnpth.s:4421: Error: bad instruction cmovg r3,r8'
/var/folders/2p/0jqlz1c94t537_53qn3h8v9h0000gn/T//cc8Tnpth.s:4422:
Error: bad instruction
cmovg r2,r3' /var/folders/2p/0jqlz1c94t537_53qn3h8v9h0000gn/T//cc8Tnpth.s:4424: Error: bad instruction cmovl r1,r3'
/var/folders/2p/0jqlz1c94t537_53qn3h8v9h0000gn/T//cc8Tnpth.s:4426:
Error: bad instruction
cmovg r3,r8' make: *** [path/to/app/obj/local/armeabi-v7a/objs/ffmpeg/ffmpeg.o] Error 1



我猜我在某个地方弄错了编译器。我正在尝试在 Mac 上构建。有什么我想念的吗?我正在尝试仅为 armeabi-v7a 构建。

最佳答案

您需要包含本地 c 文件和 Config.h 文件

像这样。

LOCAL_PATH := $(call my-dir)

LOCAL_MODULE := libavcodec
LOCAL_CFLAGS := -Os -ffunction-sections -fdata-sections
LOCAL_LDFLAGS := -Wl,--gc-sections,--icf=safe
LOCAL_C_INCLUDES := ../obj/local/$(TARGET_ARCH_ABI)/include
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_SRC_FILES := ../obj/local/$(TARGET_ARCH_ABI)/lib/libavcodec.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavfilter
LOCAL_CFLAGS := -Os -ffunction-sections -fdata-sections
LOCAL_LDFLAGS := -Wl,--gc-sections,--icf=safe
LOCAL_C_INCLUDES := ../obj/local/$(TARGET_ARCH_ABI)/include
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_SRC_FILES := ../obj/local/$(TARGET_ARCH_ABI)/lib/libavfilter.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavformat
LOCAL_CFLAGS := -Os -ffunction-sections -fdata-sections
LOCAL_LDFLAGS := -Wl,--gc-sections,--icf=safe
LOCAL_C_INCLUDES := ../obj/local/$(TARGET_ARCH_ABI)/include
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_SRC_FILES := ../obj/local/$(TARGET_ARCH_ABI)/lib/libavformat.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libavutil
LOCAL_CFLAGS := -Os -ffunction-sections -fdata-sections
LOCAL_LDFLAGS := -Wl,--gc-sections,--icf=safe
LOCAL_C_INCLUDES := ../obj/local/$(TARGET_ARCH_ABI)/include
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_SRC_FILES := ../obj/local/$(TARGET_ARCH_ABI)/lib/libavutil.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_MODULE := libswscale
LOCAL_CFLAGS := -Os -ffunction-sections -fdata-sections
LOCAL_LDFLAGS := -Wl,--gc-sections,--icf=safe
LOCAL_C_INCLUDES := ../obj/local/$(TARGET_ARCH_ABI)/include
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_SRC_FILES := ../obj/local/$(TARGET_ARCH_ABI)/lib/libswscale.a
include $(PREBUILT_STATIC_LIBRARY)

include $(CLEAR_VARS)

LOCAL_DISABLE_FATAL_LINKER_WARNINGS := true
LOCAL_LDLIBS := -llog -landroid -lz -lm
LOCAL_CFLAGS := -Os -ffunction-sections -fdata-sections -fvisibility=hidden -flto
LOCAL_LDFLAGS := -Wl,--gc-sections,--icf=safe
LOCAL_CFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_STATIC_LIBRARIES := libavfilter libavformat libavcodec libswscale libavutil
LOCAL_C_INCLUDES := $(LOCAL_PATH)/ffmpeg
LOCAL_C_INCLUDES += ../obj/local/$(TARGET_ARCH_ABI)/include
LOCAL_C_INCLUDES += $(LOCAL_PATH)/ffmpeg/$(TARGET_ARCH_ABI)-config
LOCAL_SRC_FILES := ffmpeg/ffmpeg.c ffmpeg/cmdutils.c ffmpeg/ffmpeg_filter.c ffmpeg/ffmpeg_opt.c
LOCAL_MODULE := videokit
include $(BUILD_SHARED_LIBRARY)

关于android - ffmpeg - android ndk 构建汇编程序消息错误指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39532347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com