2012-01-28 13 views
5

Las personas han podido construir PCRE (o un subconjunto de) copiando los archivos de origen y creando Andriod.mk adecuado. Quiero hacer algo similar, pero usando una cadena de herramientas independiente de Android y simplemente usando su proceso de configuración y creación. He tenido éxito construyendo otras bibliotecas útiles usando el mismo flujo, pero estoy teniendo un problema con PCRE. En concreto, a finales de la marca de flujo que estoy recibiendo este error:Error de enlace para PCRE al utilizar la cadena de herramientas autónoma Android NDK

undefined reference to__dso_handle' .libs/pcre_stringpiece.o 

Al hacer esto,

/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 fueron 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 utilizo la cadena de herramientas autónoma por defecto. Solo ocurre cuando uso uno modificado como se describe aquí: http://specificimpulses.blogspot.com/2011/10/android-fortran-step-by-step-part-2.html Necesito usar ese para construir otras bibliotecas que incluyan fortran (y lo he hecho con éxito) y quiero usar la misma cadena de herramientas para todas las construcciones. Entonces, ¿necesito reconstruir la cadena de herramientas con algunas opciones diferentes?

+0

Por favor, dame una pista sobre cómo resolver esto. O mejor, crea una cadena de herramientas independiente basada en el enlace que di y úsala para construir pcre. Vuelva a crear el error y descubra qué hacer para solucionar el problema. Creo que necesito reconstruir gcc con diferentes opciones para lograr esto, pero aún no estoy seguro de cómo. – corbin

+0

Consulte esto http://stackoverflow.com/questions/8831227/how-to-build-or-where-to-get-an-android-ndk-stand-alone-toolchain-supporting-for – corbin

Respuesta

1

Parece -fno-use-cxa-atexit es una solución aceptable.

Cuestiones relacionadas