es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error: No se encontró la biblioteca libclang_rt.asan-aarch64-android.so en la aplicación de QT en Android.

Intenté ejecutar mi aplicación QT en el emulador de Android con el Clang Sanitizer, siguiendo las indicaciones de este enlace:

target_compile_options(${PROJECT_NAME} PUBLIC -fsanitize=address -fno-omit-frame-pointer)
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS -fsanitize=address)

Agregué ese código a mi archivo CMakeLists.txt. Sin embargo, Gradle no incluye la biblioteca de sanidad en el APK y cuando inicio la aplicación obtengo el siguiente error:

library "libclang_rt.asan-aarch64-android.so" no encontrada

Necesito una solución rápida para eso. Probablemente tenga que añadir la biblioteca explícitamente de alguna manera.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Solución al problema de enlace al utilizar Address Sanitizer con Android NDK

    Si estás intentando ejecutar una aplicación QT en un emulador de Android con un Sanitizer de CLang pero recibes un mensaje de error “biblioteca no encontrada”, necesitas añadir explícitamente la biblioteca de Sanitizer a tu APK. Esto es lo que debes hacer:

    1. Primero, edita tu archivo CMakeLists.txt y añade las siguientes líneas para habilitar el Sanitizer de CLang:
    target_compile_options(${PROJECT_NAME} PUBLIC -fsanitize=address -fno-omit-frame-pointer)
    set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS -fsanitize=address)
    
    1. A continuación, construye tu aplicación usando Gradle.
    2. Una vez que la construcción esté completa, navega hasta el directorio de construcción de tu proyecto.

    3. Busca los archivos .so en el directorio. Específicamente, busca libclang_rt.asan-aarch64-android.so.

    4. Ahora, copia los archivos .so a tu APK. Puedes hacer esto utilizando la variable ANDROID_PACKAGE_SOURCE_DIR en tu script de Gradle.

    5. Por último, reconstruye la aplicación e intenta ejecutarla nuevamente. Tu aplicación debería ser capaz de encontrar la biblioteca y ejecutarse sin problemas.

    Añadir la biblioteca de Sanitizer explícitamente a tu APK debería resolver el mensaje de error “biblioteca no encontrada” y permitir que ejecutes tu aplicación QT en un emulador de Android con un Sanitizer de CLang.

Comments are closed.