0 votos

Ejecutar el binario testMyFoo en el shell adb

Me imagino que esta pregunta surge a menudo, pero allá va: Tengo un testMyFoo binario que

  1. Se instala en el teléfono /data/local/tmp/ ruta
  2. tiene los permisos de ejecución adecuados
  3. requiere una serie de bibliotecas de objetos compartidos (una de ellas es libc++_shared.so)
  4. establecer la variable LD_LIBRARY_PATH con las rutas de búsqueda necesarias
  5. se construye con el toolchain+sysroot correcto para el teléfono (arm64-v8a/android33)

Así que cuando intento ejecutar ./testMyFoo :

  1. Parece ejecutar
  2. Encuentra mis librerías dependientes de objetos compartidos
  3. Falla al cargar libc++_shared.so

Me aparece este error:

CANNOT LINK EXECUTABLE "./testMyFoo": couldn't map "/storage/emulated/0/MLZ/mlz-libs/libc/libc++_shared.so" segment 1: Permission denied

Por lo que he leído en internet, parece que tengo que ejecutar esto a través de un proyecto de Android studio. Me gustaría evitar eso (por ahora), y simplemente ejecutar mi programa directamente. ¿Alguna sugerencia?

Gracias, Charles.

0voto

pr0nin Puntos 353

Normalmente el almacenamiento interno compartido /storage/emulated/0 se monta sin restricción de ejecución.

Parece que esto no sólo afecta a los ejecutables, sino también a las bibliotecas cargadas por los ejecutables y por lo tanto se obtiene un Permission denied .

Es mejor que copies las librerías de forma que se encuentren en el mismo directorio que tu binario. librerías no junto con el binario en /data/local/tmp . A continuación, la carga de las bibliotecas debería funcionar.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X