在Android上运行C代码而不编译整个树
我有一个C代码,我想添加到Android C库中 我可以在编译整个android树时构建并执行coed。在Android上运行C代码而不编译整个树,android,c,android-ndk,adb,Android,C,Android Ndk,Adb,我有一个C代码,我想添加到Android C库中 我可以在编译整个android树时构建并执行coed。 我希望能够将代码添加到现有编译的android环境中。 i、 e.使用内置设备,只需推送我的应用程序并在那里执行 我成功地使用NDK在windows platform for linux上编译代码,并使用adb push命令推送代码 尝试使用adb执行时 我得到以下错误: [Android]不可执行:magic=7F45 Magic 7F45表示二进制文件是a,并且没有编译到ARM arch
我希望能够将代码添加到现有编译的android环境中。 i、 e.使用内置设备,只需推送我的应用程序并在那里执行 我成功地使用NDK在windows platform for linux上编译代码,并使用
adb push
命令推送代码
尝试使用adb执行时
我得到以下错误:
[Android]不可执行:magic=7F45
Magic 7F45表示二进制文件是a,并且没有编译到ARM arch(您可以使用
文件
找到哪个arch)。您需要使用NDK创建独立的工具链,然后使用它来构建正确的二进制文件
以下是您如何做到这一点的主要细节:
NDK允许您创建一个“定制”的工具链安装,以简化操作。例如,考虑下面的命令:
这将创建一个名为/tmp/myandroid toolchain的目录,其中包含android-5/arch-arm系统根和工具链二进制文件的副本
请注意,默认情况下,脚本将选择基于ARM的工具链。使用“--arch=x86”选项指定基于x86的选项,
使用“--arch=mips”选项指定基于mips的选项,或者使用“--toolchain=”选项 以后,您可以将其直接用于以下内容:
上面显示的环境变量允许您使用
configure
或make
为指定的拱门构建第三方代码。当然,您可以直接使用编译器。您所说的“添加到Android C库”是什么意思?你是说修改手机上现有的.so文件来执行你的代码吗?不是。我希望我的代码能够调用现有的c库
$NDK/build/tools/make-standalone-toolchain.sh --platform=android-5 --install-dir=/tmp/my-android-toolchain
export PATH=/tmp/my-android-toolchain/bin:$PATH
export CC=arm-linux-androideabi-gcc