#android #ffmpeg #android-ndk
#Android #ffmpeg #android-ndk
Вопрос:
Я пытаюсь использовать источник FFmpeg, предоставленный Bambuser.
Однако мне не удается собрать файлы
Я получаю следующую ошибку:
arm-linux-androideabi-gcc не может создать исполняемый файл. Сбой теста компилятора C.
Я уже установил путь NDK в /home/android-ndk, но все равно получаю эту ошибку
И я использую Android-NDK-r5b
кто-нибудь может помочь? СПАСИБО
Вот мой build.sh
#!/bin/bash
if [ "$NDK" = "" ]; then
echo NDK variable not set, assuming ${HOME}/android-ndk
export NDK=${HOME}/android-ndk
fi
SYSROOT=$NDK/platforms/android-3/arch-arm
# Expand the prebuilt/* path into the correct one
TOOLCHAIN=`echo $NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows`
export PATH=$TOOLCHAIN/bin:$PATH
rm -rf build/ffmpeg
mkdir -p build/ffmpeg
cd ffmpeg
# Don't build any neon version for now
for version in armv5te armv7a; do
DEST=../build/ffmpeg
FLAGS="--target-os=linux --cross-prefix=arm-linux-androideabi- --arch=arm"
FLAGS="$FLAGS --sysroot=$SYSROOT"
FLAGS="$FLAGS --soname-prefix=/data/data/com.streaming.realive/lib/"
FLAGS="$FLAGS --enable-shared --disable-symver"
FLAGS="$FLAGS --enable-small --optimization-flags=-O2"
FLAGS="$FLAGS --enable-encoder=mpeg4 --enable-decoder=mpeg4"
FLAGS="$FLAGS --enable-encoder=mpeg2video --enable-encoder=nellymoser"
FLAGS="$FLAGS --enable-protocol=rtp --enable-protocol=rtmp"
FLAGS="$FLAGS --enable-protocol=http --enable-protocol=tcp --enable-protocol=udp"
FLAGS="$FLAGS --enable-protocol=file"
case "$version" in
neon)
EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=neon"
EXTRA_LDFLAGS="-Wl,--fix-cortex-a8"
# Runtime choosing neon vs non-neon requires
# renamed files
ABI="armeabi-v7a"
;;
armv7a)
EXTRA_CFLAGS="-march=armv7-a -mfloat-abi=softfp"
EXTRA_LDFLAGS=""
ABI="armeabi-v7a"
;;
*)
EXTRA_CFLAGS=""
EXTRA_LDFLAGS=""
ABI="armeabi"
;;
esac
DEST="$DEST/$ABI"
FLAGS="$FLAGS --prefix=$DEST"
mkdir -p $DEST
echo $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" > $DEST/info.txt
./configure $FLAGS --extra-cflags="$EXTRA_CFLAGS" --extra-ldflags="$EXTRA_LDFLAGS" | tee $DEST/configuration.txt
[ $PIPESTATUS == 0 ] || exit 1
make clean
make -j4 || exit 1
make install || exit 1
done
Ответ №1:
Во-первых, какую платформу вы используете? Я предлагаю Ubuntu.
Во-вторых, убедитесь, что путь к NDK указан правильно.
Третий FLAGS="$FLAGS --soname-prefix=/data/data/com.streaming.realive/lib/"
возможно, вам нужно создать соответствующую папку на вашем компьютере
Комментарии:
1. 1. Я использую платформу Windows и использую Cygwin для запуска команды 2. Я уверен, что мой путь к NDK правильный /. 3. Я думаю, что эта строка предназначена для переименования имени собственной функции, чтобы мы могли вызывать функцию в коде, не так ли?
2. Я предлагаю в Ubuntu, потому что я никогда не успешно встраиваю Windows. а также не каждый метод сборки подходит для me.roman10.net/?p=389amp;cpage=2#comment-1103 Этот вариант отлично подходит для меня. Вы можете попробовать
3. и извините, я забыл об этом .. ха-ха, я решил эту проблему один раз в Windows. Метод заключается в том, что вам нужно добавить временную папку в Windows с новой настройкой в файле сборки>> $export TMPDIR=e: /temp
4. привет, я получаю ту же ошибку. можете ли вы помочь? я не знаю, что пошло не так.
Ответ №2:
Сначала проверьте ваш configure.log
файл в ffmpeg
каталоге. В этом последние несколько строк указывают на точную ошибку, с которой вы столкнулись. Если вы опубликуете эту ошибку, мы сможем вам помочь.
Ответ №3:
Если вы используете операционную систему Windows, попробуйте добавить свой путь к цепочке инструментов (используемый в build.sh
) в переменную PATH
среды (из My Computer
свойств).
Например:
C:android-ndk-r7toolchainsarm-linux-androideabi-4.4.3prebuiltwindowsbin
Попробуйте это.
Ответ №4:
здесь мой config.log Я также получаю ту же проблему при использовании скрипта bambuser. Я использую ubuntu
type mktemp
mktemp is /bin/mktemp
WARNING: Unknown C compiler arm-linux-androideabi-gcc, unable to select optimal CFLAGS
check_ld
check_cc
BEGIN /tmp/ffconf.ItYaeeJM.c
1 int main(void){ return 0; }
END /tmp/ffconf.ItYaeeJM.c
arm-linux-androideabi-gcc -c -o /tmp/ffconf.woaTRE0T.o /tmp/ffconf.ItYaeeJM.c
./configure: 572: ./configure: arm-linux-androideabi-gcc: not found
C compiler test failed.