Я пытаюсь кросс-компилировать libfaac для android для использования с ffmpeg.Я получил кросс-компиляцию ffmpeg, но libfaac вызывает у меня сильные головные боли.
Этот скрипт я использую для компиляции libfaac:
ANDROID_API=android-3
export ANDROID_NDK=${HOME}/android-ndk
export ANDROID_SDK=${HOME}/android-sdk
SYSROOT=$ANDROID_NDK/platforms/$ANDROID_API/arch-arm
ANDROID_BIN=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/*-x86/bin/
CROSS_COMPILE=${ANDROID_BIN}/arm-linux-androideabi-
export PATH=$PATH:$ANDROID_SDK/tools:$ANDROID_SDK/platform-tools
export ARM_INC=$ANDROID_NDK/platforms/android-5/arch-arm/usr/include
export ARM_LIB=$ANDROID_NDK/platforms/android-5/arch-arm/usr/lib
CFLAGS=" -I$ARM_INC -fPIC -Wall -Wextra -Wno-unused -Wno-multichar -mthumb-interwork -ffunction-sections -funwind-tables -fno-rtti -fstack-protector -fno-short-enums -DANDROID -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -Wno-psabi -march=armv5te -mtune=xscale -msoft-float -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -Wa,--noexecstack -MMD -MP -MF"
LDFLAGS=" -nostdlib -Bdynamic -Wl,--gc-sections -Wl,--no-undefined -Wl,-z,noexecstack -Wl,-z,nocopyreloc -Wl,-soname,/system/lib/libz.so -Wl,-rpath-link=$ARM_LIB,-dynamic-linker=/system/bin/linker -L$ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi -L$ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/arm-linux-androideabi/lib -L$ARM_LIB $ARM_LIB/crtbegin_dynamic.o $ARM_LIB/crtend_android.o -Wl,--start-group -lc -lm -ldl -lgcc $ANDROID_NDK/sources/cxx-stl/gnu-libstdc++/libs/armeabi/libstdc++.a $ANDROID_NDK/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/arm-linux-androideabi/lib/thumb/libsupc++.a -Wl,--end-group"
FLAGS="--host=arm-androideabi-linux --enable-static --disable-shared --prefix=$HOME "
export CPPFLAGS="$CFLAGS"
export CFLAGS="$CFLAGS"
export CXXFLAGS="$CFLAGS"
export CXX="${CROSS_COMPILE}g++ --sysroot=${SYSROOT}"
export LDFLAGS="$LDFLAGS"
export CC="${CROSS_COMPILE}gcc --sysroot=${SYSROOT}"
export NM="${CROSS_COMPILE}nm"
export STRIP="${CROSS_COMPILE}strip"
export RANLIB="${CROSS_COMPILE}ranlib"
export AR="${CROSS_COMPILE}ar"
cd ../faac
./configure $FLAGS
make clean
make -j4 || exit 1
make install || exit 1
Я очень начинающийкогда дело доходит до кода C ++ и кросс-компиляции, и я создал этот сценарий, используя множество других сценариев в качестве ссылки, поэтому я могу делать некоторые ненужные или просто некорректные вещи.
В любом случае, я получаю буквально сотни ошибок по линии:
undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
undefined reference to `__cxa_end_cleanup'
undefined reference to `__cxa_throw'
undefined reference to `__gxx_personality_v0'
Кажется, проблема связана с тем, что я неправильно связываю libsupc ++.
Я пытался сделать то, что сделал на этот другой вопрос stackoverflow, но я не знаю, правильно ли я это сделал, я не знаком с процессом связывания.
Что я делаюнеправильно?Спасибо за любую помощь.
РЕДАКТИРОВАТЬ: Оказывается, я могу или не могу ошибаться в libsupc ++, вызывающем проблемы, configure.log говорит мне, что компилятор не может создать исполняемый файл, но я не могувыясните, в чем проблема.
Вот пастбина журнала конфигурации