首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于安卓系统的FFmpeg编译(配置、制作)

用于安卓系统的FFmpeg编译(配置、制作)
EN

Stack Overflow用户
提问于 2012-05-14 21:47:00
回答 2查看 4.9K关注 0票数 3

我想为Android版本编译ffmpeg。

但是每次我尝试的时候,我都无法编译ffmpeg的源代码。

我认为我的配置选项可能无效。

我使用此脚本进行配置。

代码语言:javascript
复制
#!/bin/sh
NDK_PATH=$HOME/android-ndk-r8
PREBUILT=$NDK_PATH/toolchains/arm-linux-androideabi-4.4.3/prebuilt/darwin-x86

LDFLAGS="-Wl,-T,$PREBUILT/armelf_linux_eabi.x -Wl,-rpath-link=$NDK_PATH/platforms/android-8/arch-arm/usr/lib \
     -L$NDK_PATH/platforms/android-8/arch-arm/usr/lib -nostdlib $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtbegin.o \
     $PREBUILT/lib/gcc/arm-linux-androideabi/4.4.3/crtend.o -lc -lm -ldl"
COMMON_CONFIG="\
          ./configure --target-os=linux \
          --arch=arm \
          --enable-cross-compile \
          --cc=$PREBUILT/bin/arm-linux-androideabi-gcc \
          --as=$PREBUILT/bin/arm-linux-androideabi-gcc \
          --cross-prefix=$PREBUILT/bin/arm-linux-androideabi- \
          --sysinclude=$NDK_PATH/platforms/android-8/arch-arm/usr/include \
          --nm=$PREBUILT/bin/arm-linux-androideabi-nm \
          --extra-ldflags=\"$LDFLAGS\" \
          --extra-cflags=-I$NDK_PATH/platforms/android-8/arch-arm/usr/include \

eval "$COMMON_CONFIG"
if [ $? -ne 0 ]; then
  exit 1
fi

我必须给编译器一个新的头文件路径(通过--extra-cflag),因为当我输入'make‘时,编译器不知道头文件在哪里(比如math.h,ctime.h)

在使用这个脚本进行配置并输入'make‘之后,我得到了这些错误。

代码语言:javascript
复制
CC  libavdevice/alldevices.o
In file included from /Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/stdlib.h:42,
             from ./libavutil/common.h:35,
             from ./libavutil/avutil.h:126,
             from libavdevice/avdevice.h:22,
             from libavdevice/alldevices.c:22:
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:49: warning: redundant redeclaration of 'index'
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:47: note: previous declaration of 'index' was here
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:50: warning: redundant redeclaration of 'strcasecmp'
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:57: note: previous declaration of 'strcasecmp' was here
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/strings.h:51: warning: redundant redeclaration of 'strncasecmp'
/Users/gyeongmingim/android-ndk-r8/platforms/android-8/arch-arm/usr/include/string.h:58: note: previous declaration of 'strncasecmp' was here
In file included from ./libavutil/internal.h:178,
             from ./libavutil/common.h:342,
             from ./libavutil/avutil.h:126,
             from libavdevice/avdevice.h:22,
             from libavdevice/alldevices.c:22:
./libavutil/libm.h:62: error: static declaration of 'lrint' follows non-static declaration
./libavutil/libm.h:69: error: static declaration of 'lrintf' follows non-static declaration
./libavutil/libm.h:76: error: static declaration of 'round' follows non-static declaration
./libavutil/libm.h:90: error: static declaration of 'trunc' follows non-static declaration
make: *** [libavdevice/alldevices.o] Error 1

出了什么问题?

我的配置是否包含错误的信息?有没有丢失的旗帜?

操作系统: Mac Lion

Android-ndk版本: android-ndk-r8

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-14 21:54:51

我不知道您的配置,但我能够使用Ubuntu (或在Windows下运行Ubuntu的Oracle Box )下的bambuser (最新版本)中的脚本编译FFMPEg。

票数 3
EN

Stack Overflow用户

发布于 2013-08-12 00:27:02

我在Mac上编译FFmpeg时也遇到了同样的问题。解决方法是:

编辑config.h (是的,它是由configure生成的)并将所有lrintfriends设置为1。例如:#define HAVE_LRINT 1

这将允许构建继续进行。

如果重新运行configure,则需要再次编辑config.h

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10584589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档