NDK: enlace estático libm

Tengo un problema durante intento para compilar fuentes con la plataforma androide-9 x86 reciente.

Pregunta primaria: ¿por qué la biblioteca estática libm.a y la dinámica libm.so son diferentes?

El problema es que he intentado compilar:

/path/to/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-gcc –sysroot = / path / to / android-ndk-r8 / platforms / Android-9 / arch-x86 -I / ruta / a / android-ndk-r8 / fuentes / cxx-stl / gnu-libstdc ++ / include -I / ruta / a / android-ndk-r8 / sources / cxx-stl / Gnu-libstdc ++ / libs / x86 / include -L / ruta / a / android-ndk-r8 / fuentes / cxx-stl / gnu-libstdc ++ / lib -L / ruta / a / android-ndk-r8 / plataformas / 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

Pero tengo una referencia indefinida:

/tmp/cc78CsCp.o: En la función main': complex-5.c:(.text+0x1a2): undefined reference to feclearexcept' complex-5.c: (.text + 0x1b3): referencia indefinida a `fetestexcept 'collect2 : LD devolvió el código de salida 1

Pwd: / ruta / a / android-ndk-r8 / plataformas / android-9 / arch-x86 / usr / lib

Ls libm * libm.a libm.so

Existe, pero si miramos con nm para feclearexcept , no está presente dentro de la biblioteca estática.

Ok, sólo intenta eliminar la bandera estática.

/path/to/android-ndk-r8/toolchains/x86-4.4.3/prebuilt/linux-x86/bin/i686-android-linux-gcc –sysroot = / path / to / android-ndk-r8 / platforms / Android-9 / arch-x86 -I / ruta / a / android-ndk-r8 / fuentes / cxx-stl / gnu-libstdc ++ / include -I / ruta / a / android-ndk-r8 / sources / cxx-stl / Gnu-libstdc ++ / libs / x86 / include -L / ruta / a / android-ndk-r8 / fuentes / cxx-stl / gnu-libstdc ++ / lib -L / ruta / a / android-ndk-r8 / plataformas / 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 – Lm

De acuerdo. Que la pregunta: ¿por qué son diferentes? Necesito vinculación estática, no quiero forzar el uso de la vinculación dinámica con -Wl, -Bdynamic-lm . Por cierto: regular linux libm.a y libm.so contiene una lista similar de funciones.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.