Cómo ejecutar programas en lenguaje C en sistemas Android
/ # ./xlisten-arm
/system/bin/sh: ./xlisten-arm: not found
1. Exploración:
Después de buscar en Internet, inicialmente pensé que podría deberse a que la biblioteca estaba incompleta, así que verifiqué la biblioteca de enlaces dinámicos requerida por el archivo ejecutable xlisten-arm: p>
Ejecutar sentencia:
# arm-linux-readelf -a ./xlisten-arm | grep "Compartido"
0x00000001 (NECESARIO) Biblioteca compartida: [libsqlite3. so.0]
0x00000001 (NECESARIO) Biblioteca compartida: [libm.so.6 ]
0x00000001 (NECESARIO) Biblioteca compartida: [libcrypt.so.1]
0x00000001 (NECESARIO) Biblioteca compartida: [libpthread.so.0]
0x00000001 (NECESARIO) Biblioteca compartida: [libdl.so.2]
0x00000001 (NECESARIO) Compartida biblioteca: [libc.so. 6]
Conociendo las bibliotecas necesarias, entré en el sistema de archivos de Android y escribí las bibliotecas apropiadas.
#cp -a filename dir
Cuando copié la biblioteca, pensé que había encontrado el origen del problema, usé
#cp -a filename dir
Cuando copié la biblioteca utilicé
#cp -a filename dir
Cuando agregué la biblioteca pensé que había encontrado las raíces del problema, agregué ¡A mi archivo para preservar las propiedades originales!
Parece que esto no es solo un problema de bibliotecas faltantes, en términos generales, si el problema es causado por una biblioteca faltante, entonces al vincular a la biblioteca, el terminal nos dirá que la biblioteca no está encontró.
2. La solución correcta:
Compila el programa usando compilación estática, es decir, usa la opción -static
Modifiqué la variable CFLAG en el Makefile.
CFLAGS = -Muro
Cámbielo a:
CFLAGS = -Muro -estático
CFLAGS = -Muro -estático p>
CFLAGS = -Muro -estático
CFLAGS = -Muro -estático