有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java从安卓应用程序为Cortex M3架构生成ARM thumb2汇编代码

我想构建一个Android应用程序,它将是一个将C++转换成ARM皮质M3架构的汇编代码的接口。p>

我不是安卓java开发人员,我主要用C/C++做arduino项目。所以我需要你的帮助,告诉我如何在Android工作室中构建java应用程序的Android应用程序,这样可以从C++源代码转换成ASM代码m3皮质。p>

我做了一些研究,发现我需要使用ARM ENO EABI GCC编译器从C++生成ASM代码,就像这些命令行指令:

arm-none-eabi-gcc -O2 -mthumb -c test.c -o test.o
arm-none-eabi-objdump -D test.o

我尝试使用安卓 Termux应用程序构建编译器,但失败了。我已经阅读了许多关于如何构建arm none eabi gcc二进制文件的帖子和文章。甚至尝试在termux中运行不同的类似二进制文件,但总是失败,可能是因为我的智能手机设备架构是AARCH64,并且我使用第三方应用程序(如termux)作为linux终端仿真器,这会导致不同类型的错误。然而,我没有找到一篇关于如何使用Termux在安卓上安装这个arm编译器的好文章

甚至打开了一个new question关于如何构建这个编译器,但还没有答案

我想,为了把C++转换成ASM(M3皮层),我必须用ARM编译器执行一些shell命令作为参数的命令行工具,从我的Android应用程序中可以看到:

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);
}
我的方法是使用GTC在Android上使用TyMUX APP作为第三方,安装了ARM编译器,我可以用Android应用程序调用TyMUX API来转换C++到ASM,这将更容易构建我的Android应用程序。p>

但我不确定这样做是否正确,因为我是安卓应用程序开发的初学者。因此,请提供一些建议和例子,这些将给我实现目标的正确途径


共 (1) 个答案

  1. # 1 楼答案

    解决方案是,如果在Termux应用程序中,您将执行以下操作: (more details here

    1. pkg install proot
    2. pkg install proot-distro
    3. proot-distro install debian
    4. proot-distro login debian

    之后,您应该登录到Debian环境,并且可以安装Debian存储库上几乎所有可用的Arm软件包

    例如,您应该能够安装以下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-eabi
    

    剩下要做的唯一一件事就是使用Termux API编写您的android应用程序 这将传递输入并获得输出,正如您在问题中所建议的,这是一种正确的方法