Vinculación fallando para PCRE cuando se usa la herramienta independiente NDK de Android
Las personas han podido crear PCRE (o un subconjunto de) copiando los archivos de origen y creando Andriod.mk apropiado. Quiero hacer lo mismo, pero utilizando una herramienta independiente de Android cadena y sólo con su configurar y hacer proceso. He tenido éxito construyendo otras bibliotecas útiles usando el mismo flujo, pero estoy corriendo en un problema con PCRE. Específicamente, tarde en hacer el flujo que estoy recibiendo este error:
undefined reference to__dso_handle' .libs/pcre_stringpiece.o
Al hacer esto,
- Android NDK: no hay tabla de símbolos de archivo
- Std :: map linker error ndk r8c con APP_STL: = gnustl_static
- No se puede cargar la biblioteca compartida nativa con dependencias en una aplicación de actividad nativa
- Carga de bibliotecas compartidas que dependen de otras librerías compartidas
- ¿Cómo puedo enlazar la biblioteca nativa en Android Studio?
/bin/bash ./libtool --tag=CXX --mode=link arm-linux-androideabi-g++ -O2 -version-info 0:0:0 -o libpcrecpp.la -rpath /usr/local/lib pcrecpp.lo pcre_scanner.lo pcre_stringpiece.lo libpcre.la libtool: link: arm-linux-androideabi-g++ -fPIC -DPIC -shared -nostdlib .libs/pcrecpp.o .libs/pcre_scanner.o .libs/pcre_stringpiece.o -Wl,-rpath -Wl,/home/corbin/applications/pcre-8.21/.libs ./.libs/libpcre.so -L/home/corbin/my-android-toolchain-mod/bin/../lib/gcc/arm-linux-androideabi/4.7.0 -L/home/corbin/my-android-toolchain-mod/bin/../lib/gcc -L/home/corbin/my-android-toolchain-mod/bin/../lib/gcc/arm-linux-androideabi/4.7.0/../../../../arm-linux-androideabi/lib -L/home/corbin/my-android-toolchain-mod/bin/../sysroot/usr/lib -lstdc++ -lm -lc -ldl -lgcc -O2 -Wl,-soname -Wl,libpcrecpp.so.0 -o .libs/libpcrecpp.so.0.0.0 .libs/pcrecpp.o: In function `_GLOBAL__sub_I_pcrecpp.cc': pcrecpp.cc:(.text.startup+0x94): undefined reference to `__dso_handle' .libs/pcre_stringpiece.o: In function `_GLOBAL__sub_I_pcre_stringpiece.cc': pcre_stringpiece.cc:(.text.startup+0x40): undefined reference to `__dso_handle' collect2: error: ld returned 1 exit status make[1]: *** [libpcrecpp.la] Error 1 make[1]: Leaving directory `/home/corbin/applications/pcre-8.21'
¿Alguna idea de cuál es el problema y cuál es la solución? Leí varias cosas sobre problemas similares, pero en su mayoría eran inútiles o no estaba claro si se relacionaban con el mismo problema.
Actualización 1: he encontrado que este problema no se produce cuando uso la herramienta predeterminada independiente. Sólo ocurre cuando uso un modificado como se describe aquí: http://specificimpulses.blogspot.com/2011/10/android-fortran-step-by-step-part-2.html Necesito usarlo para construir Otras bibliotecas que incluyen fortran (y lo han hecho con éxito) y quieren usar la misma cadena de herramientas para todas las compilaciones. Entonces, ¿necesito reconstruir la cadena de herramientas con algunas opciones diferentes?
- error de vinculación a libgcc.a cuando la recopilación cruzada para Android, pero existen símbolos?
- ¿Cuáles son las posibles causas de "fallo en el mapeo del segmento desde el objeto compartido: operación no permitida", y cómo depurar?
- Android: No se puede cargar la biblioteca (94 tablas esenciales que faltan)
- Android NDK: Enlace mediante una biblioteca estática precompilada
- Android NDK eabi - ¿Cómo hacer que ndk sepa usar fp duro?
- Android NDK / JNI: Creación de una biblioteca compartida que depende de otras bibliotecas compartidas
- GCC: Prueba de herencia simple falla
Parece que -fno-use-cxa-atexit
es una solución aceptable.