Quiero crear una aplicación para Android que sea una interfaz para convertir C++ en código ensamblador para la arquitectura ARM Cortex M3.
No soy un desarrollador de Android Java, y hago principalmente proyectos de arduino con C/C++. Así que necesito su ayuda para orientarme en buenas direcciones sobre cómo crear una aplicación de Android con Java en Android Studio o similar, que podrá convertir el código fuente de C++ al código ASM M3 Cortex.
Investigué un poco y descubrí que necesito usar el compilador ARM NONE EABI GCC para generar código ASM desde C++, tan simple como estas instrucciones de la línea de comandos:
arm-none-eabi-gcc -O2 -mthumb -c test.c -o test.o arm-none-eabi-objdump -D test.oTraté de construir ese compilador usando la aplicación Android Termux, pero fallé. He seguido muchas publicaciones y artículos sobre cómo crear un archivo binario arm-none-eabi-gcc. Incluso traté de ejecutar diferentes binarios similares en termux pero siempre fallaba, probablemente porque la arquitectura de mi dispositivo de teléfono inteligente es AARCH64 y uso una aplicación de terceros como Termux como emulador de terminal de Linux, lo que resulta en diferentes tipos de errores. Sin embargo, no encontré un buen artículo sobre cómo instalar este compilador de brazo en Android usando Termux.
Incluso abrió una nueva pregunta sobre cómo construir este compilador, pero aún no hay respuestas.
Supongo que para convertir C ++ a ASM (M3 Cortex) tengo que ejecutar algunos comandos de shell usando un compilador arm como herramienta de línea de comandos con parámetros, desde mi aplicación de Android algo como:
try{ Process su = Runtime.getRuntime().exec("su"); DataOutputStream outputStream = new DataOutputStream(su.getOutputStream()); outputStream.writeBytes("arm-none-eabi-gcc -O2 -mthumb -c test.c -o test.o"); outputStream.flush(); outputStream.writeBytes("exit\n"); outputStream.flush(); su.waitFor(); }catch(IOException e){ throw new Exception(e); }catch(InterruptedException e){ throw new Exception(e); }Mi método fue usar GCC en Android Usando la aplicación Termux como un tercero que tiene instalado el compilador ARM, al que puedo llamar con la API de termux desde mi aplicación de Android para convertir C++ a ASM, lo que facilitará el proceso de creación de mi aplicación de Android.
Pero no estoy seguro de si esa es la forma correcta de hacerlo, ya que soy un principiante en el desarrollo de aplicaciones para Android. Así que por favor ayúdenme con sugerencias, ejemplos que me darán la forma correcta de lograr mis objetivos.
Una solución sería si en la aplicación Termux hicieras lo siguiente: ( más detalles aquí )
pkg install prootpkg install proot-distroproot-distro install debianproot-distro login debianDespués de eso, debe iniciar sesión en un entorno Debian y puede instalar casi cualquier paquete Arm disponible en los repositorios de Debian.
Por ejemplo, debería poder instalar este compilador de Cortex:
$ sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi $ sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa $ sudo apt-get update $ sudo apt-get install gcc-arm-none-eabi $ sudo apt-get install gdb-arm-none-eabiLo único que queda por hacer es escribir su aplicación de Android, utilizando la API de Termux , que pasará la entrada y obtendrá la salida como ya sugirió en su pregunta, que es la forma correcta.