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?
- Cómo construir i686-linux-android-gfortran para android-ndk8b (x86 arco Android)?
- Android X86 en vmware, Google Play requiere wifi
- Android x86 porting, incapaz de hacer que funcione
- No hay audio en Android-x86
- Bluetooth no funciona en Android x86 en VirtualBox
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 1Pwd: / 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.
- ¿Los binarios construidos para ARM funcionarán con procesadores Intel?
- Android NDK: ¿qué debo establecer en Application.mk para APP_ABI?
- Cómo compilar Android AOSP para x86
- Imagen de sistema basada en x86 de Android no encontrada en la actualización de rev 18 de SDK
- Creación de Android NDK Toolchain para x86 Android en Windows mediante Cygwin