我有安装Android Gingerbread 2.3.4的设备在这里我想在Android设备上运行C可执行文件
我能够在Device上运行android NDK应用程序,并且它运行完美但是我想hello.c在Device上只运行一个可执行文件.
/* #includes #defines ... */
int main(){
// Do something when this is executed
return 0;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用Android NDK工具链编译这个文件,我们可以运行这个文件的可执行文件
我在这里发现了一件事,但这对我来说不起作用我使用Android NDK, Revision 7blinux没有像这样的目录结构
我试图了解独立工具链的含义.以下是我的发现.一个工具链,可以使用所有配置,即正确路径中的系统头和库.对于Android,它还会在工具链可以查找的路径中包含API标头.为何"独立"这个词?这可能与常规工具链的不同之处在于RT需要配置并准备好供android使用sysroot和libc标题路径等等.请注释.
嗯,我正在为android编译,一个进程正在运行一个名为make-standalone-toolchain.sh的脚本,创建了一个独立的工具链.我正在通过这个脚本来了解这是做什么的.不太擅长shell脚本.但是做了一些事情.""生成包含工作sysroot的自定义Android工具链安装.结果可以更容易地用作独立的交叉编译器,例如运行configure和make脚本." - tool链接ndk-dir package-dir系统平台变量设置Compute source sysroot SRC_SYSROOT ="$ NDK_DIR /平台/ $ PLATFORM arch- $ ARCH"复制sysroot头文件和库...... libstdc ++头文件和库...预构建的二进制文件.然后进入一个临时文件夹,然后从Tmp目录复制到安装目录创建一个tar即一个包文件来添加tmpdir想要知道这里到底发生了什么或链接或建议在哪里look.but ofcourse不想阅读非常精细的手册.〜
我一直在将一些Linux工具(以及我自己的一些C代码)交叉编译到Android,我面临的挑战之一就是Android的libc有一些缺失/剥离的组件,我最终修补了我的代码以使其能够与Android的libc(例如像http://credentiality2.blogspot.com/2010/08/compile-ncurses-for-android.html这样的问题)
Q1:在使用arm工具链(或ndk-build)进行交叉编译时,如何静态链接glibc(以及其他依赖项)?
Q2:对于Android的二进制文件静态链接glibc是一个好主意吗?如果我开始静态链接,我是否应该期待任何事情?有任何性能/内存问题吗?
我理解静态与动态链接的大部分优缺点 - C++应用程序 - 我应该为库使用静态或动态链接吗?和 静态链接与动态链接
因此,我希望知道在交叉编译二进制文件时是否应该静态链接glibc for Android.
有时我需要在我的设备上运行命令或脚本,但它们不可用或不存在.
我们可以向Android设备添加一些额外的命令shell,除了那些已经可用的命令吗?
例如,将screenrecord命令添加到我的设备(我的设备的AndroidAPI低于19),这是不可用的.
我知道如何获取设备上的可用命令列表 adb shell
adb shell ls /system/bin
Run Code Online (Sandbox Code Playgroud)
但我想添加更多的自定义命令和脚本,做一些特殊的工作.
有什么办法吗?或者这不可能?
我正在编写一个Android应用程序来测试网络性能,我想在应用程序中使用iPerf.我可以找到已经为Android编译的二进制iPerf文件(然后我可以在手机上运行iPerf并收集它的输出)但我有兴趣自己编译文件.
在这里,有人提供了可用于编译程序的脚本:http: //sourceforge.net/tracker/index.php?func = enter&aid = 3533374&group_id = 128336 &atid = 711373
我知道它需要NDK,但我不知道从哪里开始.是否有任何好的资源或建议可以帮助我自己编译(在Windows上,但我也有Cygwin).我知道C以及如何在linux上使用GCC,但我不知道从哪里开始.
在此先感谢您的帮助!