//编辑节省时间并参考SF项目 。 国际海事组织,它可以节省大量的工作起来速度…..
在这个问题上更多的工作之后:
添加了一个git 项目
使用自定义工具链可以更轻松地构build,这样就可以简单地调用编译器
来自ndk-build的 stdout示例
– 最初在windows vista的vmplayer中使用Ubuntu 12.04。 IMO Linux比Cygwin更适合构build。
我遵循这些指示得到一个不确定的结果,其中存在以下条件。
build_android.sh似乎正常退出
config.log有错误,从串口链接确认gcc
所有的静态库构build好(./libavfilter,./libavcodec等)
ffmpeg.o在那里,执行正常
没有./android目录根据前缀设置configuration
它看起来像我可以推二进制文件到我的手机,并在一个壳testing。 如果这没关系,那么我可以看一个jni包装的静态库。
但为什么没有编写任何东西–prefix =。/ android / armv7-a? 在构build结束时,该path不存在
细节:
configurationlogging什么处理:
FFMPEG_CONFIGURATION='--target-os=linux --prefix=./android/armv7-a --enable-libvpx --enable-libvorbis --enable-pthreads --logfile=config.log --enable-cross-compile --extra-libs=-lgcc --arch=arm --cc=/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc --cross-prefix=/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi- --nm=/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-nm --sysroot=/home/rob/src/android-ndk-r8/platforms/android-14/arch-arm/ --extra-cflags='"'"' -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 -mfloat-abi=softfp -marm -march=armv7-a -mtune=cortex-a9 '"'"' --disable-shared --enable-static --extra-ldflags='"'"' -Wl,-rpath-link=/home/rob/src/android-ndk-r8/platforms/android-14/arch-arm//usr/lib -L/home/rob/src/android-ndk-r8/platforms/android-14/arch-arm//usr/lib -nostdlib -lc -lm -ldl -llog'"'"' --disable-everything --enable-demuxer=mov --enable-demuxer=h264 --disable-ffplay --enable-protocol=file --enable-avformat --enable-avcodec --enable-decoder=rawvideo --enable-decoder=mjpeg --enable-decoder=h263 --enable-decoder=mpeg4 --enable-decoder=h264 --enable-parser=h264 --disable-network --enable-zlib --disable-avfilter --disable-avdevice'
configuration日志的尾部包含编译器检查错误
zmbv_test='yes' zmbv_test_deps='zlib' WARNING: /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-pkg-config not found, library detection may fail. mktemp -u XXXXXX Yd2A0h WARNING: Unknown C compiler /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc, unable to select optimal CFLAGS check_ld cc check_cc BEGIN /tmp/ffconf.m9Kg3cqt.c 1 int main(void){ return 0; } END /tmp/ffconf.m9Kg3cqt.c /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc -O3 -fpic -DANDROID -DHAVE_SYS_UIO_H=1 -Dipv6mr_interface=ipv6mr_ifindex -fasm -Wno-psabi -fno-short-enums -fno-strict-aliasing -finline-limit=300 -mfloat-abi=softfp -marm -march=armv7-a -mtune=cortex-a9 -c -o /tmp/ffconf.tO2EIBz5.o /tmp/ffconf.m9Kg3cqt.c ./configure: 640: ./configure: /home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc: not found C compiler test failed.
build_android.sh stdout的尾部看起来不错
libavutil/opt.c: In function 'av_find_opt': libavutil/opt.c:41:5: warning: 'av_next_option' is deprecated (declared at libavutil/opt.h:347) [-Wdeprecated-declarations] CC libavutil/pixdesc.o libavutil/opt.c: In function 'av_opt_set_defaults': libavutil/opt.c:601:5: warning: 'av_opt_set_defaults2' is deprecated (declared at libavutil/opt.h:370) [-Wdeprecated-declarations] CC libavutil/random_seed.o CC libavutil/rational.o CC libavutil/rc4.o CC libavutil/samplefmt.o CC libavutil/sha.o CC libavutil/timecode.o CC libavutil/tree.o CC libavutil/utils.o CC libavutil/x86/cpu.o INSTALL libavdevice/avdevice.h INSTALL presets/libvpx-1080p50_60.ffpreset INSTALL presets/libvpx-1080p.ffpreset INSTALL presets/libvpx-360p.ffpreset INSTALL presets/libvpx-720p50_60.ffpreset INSTALL presets/libvpx-720p.ffpreset INSTALL presets/libx264-ipod320.ffpreset INSTALL presets/libx264-ipod640.ffpreset INSTALL doc/ffprobe.xsd INSTALL libavdevice/libavdevice.pc INSTALL libavfilter/asrc_abuffer.h INSTALL libavfilter/avcodec.h INSTALL libavfilter/avfilter.h INSTALL libavfilter/avfiltergraph.h INSTALL libavfilter/buffersink.h INSTALL libavfilter/version.h INSTALL libavfilter/vsrc_buffer.h INSTALL libavfilter/libavfilter.pc INSTALL libavformat/avformat.h INSTALL libavformat/avio.h INSTALL libavformat/version.h INSTALL libavformat/libavformat.pc INSTALL libavresample/avresample.h INSTALL libavresample/version.h INSTALL libavresample/libavresample.pc INSTALL libavcodec/avcodec.h INSTALL libavcodec/avfft.h INSTALL libavcodec/dxva2.h INSTALL libavcodec/vaapi.h INSTALL libavcodec/vda.h INSTALL libavcodec/vdpau.h INSTALL libavcodec/version.h INSTALL libavcodec/xvmc.h INSTALL libavcodec/libavcodec.pc INSTALL libswresample/libswresample.pc INSTALL libswresample/swresample.h INSTALL libswscale/swscale.h INSTALL libswscale/libswscale.pc INSTALL libavutil/adler32.h INSTALL libavutil/aes.h INSTALL libavutil/attributes.h INSTALL libavutil/audio_fifo.h INSTALL libavutil/audioconvert.h INSTALL libavutil/avassert.h INSTALL libavutil/avstring.h INSTALL libavutil/avutil.h INSTALL libavutil/base64.h INSTALL libavutil/bprint.h INSTALL libavutil/bswap.h INSTALL libavutil/common.h INSTALL libavutil/cpu.h INSTALL libavutil/crc.h INSTALL libavutil/error.h INSTALL libavutil/eval.h INSTALL libavutil/fifo.h INSTALL libavutil/file.h INSTALL libavutil/imgutils.h INSTALL libavutil/intfloat.h INSTALL libavutil/intfloat_readwrite.h INSTALL libavutil/intreadwrite.h INSTALL libavutil/lfg.h INSTALL libavutil/log.h INSTALL libavutil/lzo.h INSTALL libavutil/mathematics.h INSTALL libavutil/md5.h INSTALL libavutil/mem.h INSTALL libavutil/dict.h INSTALL libavutil/opt.h INSTALL libavutil/parseutils.h INSTALL libavutil/pixdesc.h INSTALL libavutil/pixfmt.h INSTALL libavutil/random_seed.h INSTALL libavutil/rational.h INSTALL libavutil/samplefmt.h INSTALL libavutil/sha.h INSTALL libavutil/timecode.h INSTALL libavutil/timestamp.h INSTALL libavutil/avconfig.h INSTALL libavutil/libavutil.pc AR libavdevice/libavdevice.a AR libavfilter/libavfilter.a AR libavformat/libavformat.a AR libavresample/libavresample.a AR libavcodec/libavcodec.a AR libswresample/libswresample.a AR libswscale/libswscale.a AR libavutil/libavutil.a INSTALL libavdevice/libavdevice.a INSTALL libavfilter/libavfilter.a INSTALL libavresample/libavresample.a INSTALL libswresample/libswresample.a INSTALL libswscale/libswscale.a INSTALL libavutil/libavutil.a INSTALL libavformat/libavformat.a LD ffmpeg_g INSTALL libavcodec/libavcodec.a CP ffmpeg STRIP ffmpeg INSTALL install-progs-yes INSTALL ffmpeg
“找不到”的错误并不是说arm-linux-androideabi-gcc没有找到,这个错误是从 arm-linux-androideabi-gcc返回的,很可能是因为错误的标志。 由于您的–cross-prefix设置正确,您可以删除–cc和–nm行。 如果你稍微修改了一个交叉前缀(例如,你可以看到未找到的错误将会变成一个不太明确的错误)。
尝试摆脱除了“-DANDROID -mfloat-abi = softfp -marm -march = armv7-a”之外的所有内容,并删除额外的引号,看是否编译。
这是你遵循的指南说:
脚本完成执行后,在ffmpeg-0.8目录下将会有一个名为android的文件夹,其中包含构建的所有输出。
在标准“build_android.sh”中更改了2个项目,至少按照$ PREFIX获得目标目录中的输出…
缩写列表的变化
NDK=/home/rob/src/android-ndk-r8 PLATFORM=$NDK/platforms/android-8/arch-arm/ PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86 export PATH=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/:$PATH
…
mkdir -p $PREFIX .. make clean
编译器检查,我抱怨在原始的常见问题仍然存在…
/home/rob/src/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc无法创建可执行文件。 C编译器测试失败。
但是,我在正确的文件夹中得到了输出二进制文件,所以我将它们移动到手机上,并从shell中的CLI进行测试,以查看是否可以创建将在手机上播放的WEBM文件。