Compile el programa C a través de NDK y ejecútelo en la placa de desarrollo iMX6q

 En el pasado, quería compilar un programa en lenguaje C en un archivo ejecutable en el sistema Ubuntu y ejecutarlo en la placa equipada con el sistema Android 6.0.1 . Al compilar usando el compilador gcc , aunque el archivo ejecutable podría ser generado, se produjo un error . Se produjo un error y el método final aún no se pudo ejecutar en la placa. Sin embargo, después de cambiar mi forma de pensar, descubrí que los archivos ejecutables se pueden generar mediante la compilación NDK y se pueden ejecutar con éxito en la placa de desarrollo. Los problemas encontrados y las soluciones se registran en detalle a continuación.

Tabla de contenido

problema de compilación gcc

1.Archivo no encontrado

2. No es un programa ejecutable de 64/32 bits

Compilación NDK para resolver problemas.

Colóquelo en la placa de desarrollo iMX6q y ejecútelo.


problema de compilación gcc

1.Archivo no encontrado

Cuando obtengo un archivo de programa C, lo primero que pienso es en compilarlo en un archivo ejecutable a través del compilador gcc. Sin embargo, cuando el archivo ejecutable compilado con el compilador gcc se coloca en la placa de desarrollo y se ejecuta, aparece el siguiente mensaje: No existe tal archivo o directorio , tampoco puedo encontrar el archivo

Más tarde descubrí que estaba usando el compilador gcc que había descargado previamente en el sistema Ubuntu. Este compilador no era el compilador que usé para compilar el sistema Android en la placa de desarrollo, por lo que no podía ejecutarse en la placa de desarrollo y compilar. la imagen de Android. El compilador es el compilador del kernel proporcionado por el fabricante de la placa de desarrollo.

2. No es un programa ejecutable de 64/32 bits

 Cuando uso el compilador que viene con la placa de desarrollo (como se muestra a continuación) para compilar mi programa C

 Después de compilar, ejecuté el archivo ejecutable en la placa, pero todavía había un problema y me preguntaba: no ejecutable: archivo ELF de 64 bits

La placa de desarrollo es de 32 bits, pero este programa es de 64 bits, así que compilé el programa en 32 bits y utilicé la referencia para compilar el programa de 32 bits en Linux de 64 bits.

Ejecute el archivo compilado en la placa de desarrollo y descubra que, aunque el programa se ha convertido en 32 bits, sigue siendo un archivo no ejecutable. 

Compilación NDK para resolver problemas.

Luego decida el método de conversión. Ya no se ciñe a la compilación de gcc. El uso de la compilación de ndk también puede generar archivos ejecutables, que también se pueden copiar a la placa de desarrollo y ejecutar. Los pasos específicos son los siguientes:

Primero, coloque el programa C y un archivo Android.mk en la carpeta. Solo necesita colocar estos dos archivos. Para conocer el método específico de escritura de Android.mk, consulte (Compilación NDK) Explicación detallada del programa C/C++. proceso compilado usando Android.mk

Luego abra la terminal en el directorio actual e ingrese el comando de compilación NDK

/home/yinlong/Music/sdkapp/android-ndk-r14b-linux-x86_64/android-ndk-r14b/ndk-build NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk

Puede generar archivos libs en el directorio actual y habrá muchas versiones de archivos ejecutables.

El archivo ejecutable adecuado para mi imx6q y el anterior es un sistema de 32 bits se coloca en el directorio armeabi-v7a.

 Puedes ver el archivo ejecutable test_app

Colóquelo en la placa de desarrollo iMX6q y ejecútelo.

Coloque el archivo anterior en el dispositivo Android, es decir, póngalo en mi placa de desarrollo y ejecute el siguiente comando para configurar los permisos de lectura y escritura del archivo. Tenga en cuenta que debe tener permisos de root .

chmod 777 test_app

Luego puedes ejecutar el archivo ejecutable compilado por NDK. 

./test_app

Supongo que te gusta

Origin blog.csdn.net/danielxinhj/article/details/133070695
Recomendado
Clasificación