Android 为什么ndk构建ffmpeg时出错?
我曾尝试在Windows7中为Android构建Android 为什么ndk构建ffmpeg时出错?,android,android-ndk,ffmpeg,Android,Android Ndk,Ffmpeg,我曾尝试在Windows7中为Android构建ffmpeg,但在ndk构建时出错 错误日志如下所示: Wun@Wun-PC ~/ffmpeg/jni/ffmpeg $ ndk-build SharedLibrary : libffmpeg.so C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavcodec.a(log2_tab.o):(.rodata+0x0): multiple definition of `ff_log2_tab' C:/c
ffmpeg
,但在ndk构建时出错
错误日志如下所示:
Wun@Wun-PC ~/ffmpeg/jni/ffmpeg
$ ndk-build
SharedLibrary : libffmpeg.so
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavcodec.a(log2_tab.o):(.rodata+0x0): multiple definition of `ff_log2_tab'
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavformat.a(log2_tab.o):(.rodata+0x0): first defined here
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavutil.a(log2_tab.o):(.rodata+0x0): multiple definition of `ff_log2_tab'
C:/cygwin/home/Wun/ffmpeg/obj/local/armeabi/libavformat.a(log2_tab.o):(.rodata+0x0): first defined here
collect2: ld returned 1 exit status
/home/Wun/android-ndk-r8b/build/core/build-binary.mk:378: recipe for target '/home/Wun/ffmpeg/obj/local/armeabi/libffmpeg.so' failed
make: *** [/home/Wun/ffmpeg/obj/local/armeabi/libffmpeg.so] Error 1
我已经删除了
OBJS-$(配置共享)+=log2\u tab.o
在libavformat
和libavcodec
的Makefile
中
但问题还是发生了
我是否应该删除libavcodec.a、libavformat.a、libavutil.a和libswscale.a
,然后再次重建
有人知道如何解决这个问题吗
提前谢谢
这个问题在交叉编译场景中已经出现过不止一次
这是一个好主意。对于gcc,您应该运行
./configure … --extra-cflags="-DHAVE_ISNAN -DHAVE_ISINF"
您也可以将其添加到Android.mk中:
LOCAL_CFLAGS += "-DHAVE_ISNAN -DHAVE_ISINF"
由于您不运行/configure
,因此可以编辑config.h
文件并设置以下两项:
#define HAVE_ISNAN=1
#define HAVE_ISINF=1
我在每个Android.mk添加LOCAL\u CFLAGS+=“-DHAVE\u ISNAN-DHAVE-ISINF”
。错误没有解决,它显示了config.h:131:0:warning:“HAVE_ISNAN”重新定义[默认启用]:0:0:注意:这是以前定义的位置
。我引用了链接,但我不知道如何为GCC添加--extra cflags=“-DHAVE_ISNAN-DHAVE-ISINF”
?好的,让我们只尝试一下LOCAL_cflags+=-DHAVE-ISINF。如果这不能解决问题,请发布您的
config.h`文件。您确定问题出在HAVE_ISNAN和DHAVE-ISINF
。我在错误日志中没有看到任何关于HAVE_ISNAN和DHAVE-ISINF
的参数…我发现了问题,我只删除了libm.h
中的“static”。它应该删除libm.h
中的所有静态方法。而且效果很好。