NDK: статическая линковка libm
У меня проблема при попытке скомпилировать исходники с недавней платформы Android-9 x86.
Основной вопрос: почему статическая библиотека libm.a и динамическая libm.so отличаются?
Проблема в том, что я пытаюсь скомпилировать:
/path/to/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-gcc --sysroot = / path / to / android-ndk-r8 / платформы /android-9/arch-x86 -I/path/to/android-ndk-r8/sources/cxx-stl/gnu-libstdC++/include -I/path/to/android-ndk-r8/sources/cxx-stl/gnu-libstdC++/libs/x86/include -L/path/to/android-ndk-r8/sources/cxx-stl/gnu-libstdC++/lib -L/path/to/android-ndk-r8/ платформы / android -9 / arch-x86 / usr / lib -static /path/to/gcc_4_4_6_release/gcc/testsuite/gcc.dg/complex-5.c -std = c99 -O -ffloat-store -o./complex-5. exe -lm
но у меня есть неопределенная ссылка:
/tmp/cc78CsCp.o: в функции
main': complex-5.c:(.text+0x1a2): undefined reference to
feclearexcept' complex-5.c:(.text+0x1b3): неопределенная ссылка на `fetestexcept' collect2: ld вернул 1 статус выходаpwd: / путь / к / android-ndk-r8 / платформы / android-9 / arch-x86 / usr / lib
ls libm * libm.a libm.so
Он существует, но если мы посмотрим на nm для feclearexcept, его нет в статической библиотеке.
Хорошо, просто попробуйте удалить флаг -static.
/path/to/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-gcc --sysroot = / path / to / android-ndk-r8 / платформы /android-9/arch-x86 -I/path/to/android-ndk-r8/sources/cxx-stl/gnu-libstdC++/include -I/path/to/android-ndk-r8/sources/cxx-stl/gnu-libstdC++/libs/x86/include -L/path/to/android-ndk-r8/sources/cxx-stl/gnu-libstdC++/lib -L/path/to/android-ndk-r8/ платформы /android-9/arch-x86/usr/lib /path/to/gcc_4_4_6_release/gcc/testsuite/gcc.dg/complex-5.c -std=c99 -O -ffloat-store -o ./complex-5.exe - люмен
Хорошо. Вот и вопрос: чем они отличаются? Мне нужна статическая связь, я не хочу принудительно использовать динамическую связь с -Wl, -Bdynamic -lm. Кстати: обычные linux libm.a и libm.so содержат аналогичный список функций.