我已尝试在Windows 7中为Android构建ffmpeg
,但在ndk-build
时出错。
错误日志如下所示:
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-$(CONFIG_SHARED) += log2_tab.o
在Makefile
libavformat
和libavcodec
。
但问题仍然存在......
我应该删除libavcodec.a , libavformat.a , libavutil.a and libswscale.a
,然后再重建一次吗?
有人知道如何解决这个问题吗?
提前致谢。
答案 0 :(得分:1)
在交叉编译方案中,此问题不止一次reported。
这是一个configuration problem。对于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