Компиляция ffmpeg с помощью android ndk r5b

Скомпилируйте ffmpeg с помощью android ndk r5b.

Ffmpeg 0.6.1

Android ndk r5b

Cygwin 1.7

Построить ссылочный URL: 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

ОК!!!! без проблем.

Но, 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 – тот же результат.

что не так?

Solutions Collecting From Web of "Компиляция ffmpeg с помощью android ndk r5b"

У меня было трудное время, чтобы заставить его работать в 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} 

После этого я получил его компиляцию.

Вы не устанавливаете каталог tmp. Вы можете установить его в / etc / profile или просто в терминале с помощью export TMPDIR=/your/tmp/directory . Примечание. 1. Если вы скомпилируете с cygwin, каталог должен быть как D: / tmp. Вы не можете использовать / cygdrive / d / tmp. 2. У вас должно быть разрешение папки.

Я не мог заставить это работать, у меня была такая же проблема. Однако я смог скомпилировать с помощью «android-ndk-r4». На данный момент я не уверен, что вызывает проблему, но если я когда-нибудь обдумаю это, я тоже опубликую это.

Так что теперь обходным путем является использование ndk r4.

Мне удалось создать его, используя NDK R6, cygwin. В самом деле, он не поддерживает / cydrive / paths, просто использует пути, такие как окна; Пример ниже:

 NDK=e:/AndroidSDK/NDK6 PLATFORM=$NDK/platforms/android-9/arch-arm/ PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows 

Если вы не решили эту проблему, проверьте последнюю часть config.log в каталоге ffmpeg; Это, скорее всего, проблема с параметром пути или CC.

У меня была такая же проблема с r6. Я пробовал предложение Lambage с r4, но все равно не мог заставить это работать.

Я много изучал проблему, и я думаю, что нашел причину.

1) configure вызывает андроидный кросс-компилятор, который является файлом .exe Windows.

2) Он вызывает его через cygwin, который использует соглашения об именах файлов unix. EG / cygdrive / c / вместо каталога C: \

3) В документации инструментальной привязки android NDK говорится, что кросс-компиляторы НЕ принимают файловые пути стиля cygwin (источник: NDK / docs / STANDALONE_TOOLCHAIN.html):


5.1 / Поддержка Windows:

Бинарные файлы Windows не зависят от Cygwin. Хорошей новостью является то, что они, таким образом, быстрее, плохая новость заключается в том, что они не понимают спецификацию пути Cygwin, например / cygdrive / c / foo / bar (вместо C: / foo / bar).


Я все еще пытаюсь найти способ сделать это. Если я решу это, я вернусь и отредактирую этот пост … tbc