使用android ndk r5b编译ffmpeg。
ffmpeg 0.6.1
android ndk r5b
cygwin 1.7
构建参考网址:http://www.cnblogs.com/scottwong/archive/2010/12/17/1909455.html
但是,ffmpeg ./configure结果错误! (在config.err文件下面)
check_cc
BEGIN /tmp/ffconf.GlDiY1P8.c
1 int main(void){ return 0; }
END /tmp/ffconf.GlDiY1P8.c
/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gcc -fPIC -DANDROID -c -o /tmp/ffconf.1kQLpGaU.o /tmp/ffconf.GlDiY1P8.c
arm-eabi-gcc.exe: /tmp/ffconf.GlDiY1P8.c: No such file or directory
arm-eabi-gcc.exe: no input files
C compiler test failed.
所以,我只是尝试测试代码。
// test.c code
int main(){
return 0;
}
/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gcc -fPIC -DANDROID -c -o ./test.o ./test.c < / p>
OK !!!!没问题。
但是, cp ./test.c / tmp(复制到/ tmp)
/android-ndk-r5b/toolchains/arm-eabi-4.4.0/prebuilt/windows/bin/arm-eabi-gcc -fPIC -DANDROID -c -o ./test.o /tmp/test.c
arm-eabi-gcc.exe: /tmp/test.c: No such file or directory
arm-eabi-gcc.exe: no input files
失败!!! 差异只是文件路径。 / tmp目录存在,权限是对的。 /home/test.c是相同的结果。
怎么了?
答案 0 :(得分:6)
我很难在Windows中使用它,但最终我成功了! 以前的帖子是正确的 - Cygwin路径和Windows路径存在问题。 我已经尝试过上面帖子中描述的解决方案作为第一件事,但它没有用。最后我明白了原因:即使你将build_android.sh文件放入Windows路径,FFmpeg的配置仍然包含错误的路径。
所以在我的情况下,我已经部分改变了FFmpeg根目录中的配置文件:
#set temporary file name
: ${TMPDIR:=$TEMPDIR}
: ${TMPDIR:=$TMP}
: ${TMPDIR:=/tmp}
到此:
# set temporary file name
#: ${TMPDIR:=$TEMPDIR}
#: ${TMPDIR:=$TMP}
: ${TMPDIR:=D:/InstallTools/Android/Cygwin_Root/tmp}
在此之后,我进行了编译。
答案 1 :(得分:3)
您没有设置tmp目录。您可以在/ etc / profile中设置它,或者只在export TMPDIR=/your/tmp/directory
的终端中设置它。
注意:
1.如果使用cygwin进行编译,则目录必须类似于D:/ tmp。你不能使用/ cygdrive / d / tmp。
2.您必须拥有该文件夹的权限。
答案 2 :(得分:1)
我也无法让它工作,我有完全相同的问题。但是我能够使用“android-ndk-r4”进行编译。目前我不确定导致问题的原因是什么,但是如果我能解决这个问题,我也会发布这个问题。
所以现在解决方法是使用ndk r4。
答案 3 :(得分:1)
我设法使用NDK R6,cygwin构建它。实际上,它不支持 / cydrive / 路径,只需使用像windows这样的路径;以下示例:
NDK=e:/AndroidSDK/NDK6
PLATFORM=$NDK/platforms/android-9/arch-arm/
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows
答案 4 :(得分:0)
如果您还没有解决此问题,请检查ffmpeg目录中config.log的最后一部分;它很可能是路径或CC参数问题。
答案 5 :(得分:0)
我一直遇到与r6完全相同的问题。我用r4尝试过Lambage的建议,但仍无法使用它。
我一直在研究这个问题,我想我已经找到了原因。
1)configure调用android交叉编译器,这是一个windows .exe文件。
2)它通过cygwin调用它,它使用unix文件命名约定。 E.G / cygdrive / c /目录而不是C:\ directory
3)它在android NDK工具链文档中说交叉编译器不接受cygwin样式的文件路径(来源:NDK / docs / STANDALONE_TOOLCHAIN.html):
Windows二进制文件不依赖于Cygwin。好消息是他们 因此更快,坏消息是他们不了解Cygwin 路径规范如/ cygdrive / c / foo / bar(而不是C:/ foo / bar)。
我仍在努力想办法做到这一点。如果我解决了,那么我会回来编辑这篇文章... tbc