ern*_*rn0 10 linux android native pthreads
首先,我相信,这不是一个重复的问题.我不想用NDK编写本机应用程序,我只想将Android设备用作廉价的Linux 服务器.在此上下文中,服务器表示没有UI的程序.此外,服务器是用裸C++编写的,但根本不使用任何库,所以这就是为什么这个问题与其他问题不同.
故事
我们为Linux编写了一个小型服务器,它有一个webserver接口,所以你用一个vanilla浏览器连接它,你可以玩它.我们已将其编译为Linux/x86,Linux/ARM(GuruPlug),Linux/PPC(某种NAS)和Mac OS X Darwin平台.
Linux/ARM版本在我的PalmPré智能手机上运行良好.我刚刚将可执行文件复制到我的手机上(在webOS场景中,没有像越狱这样的东西,有一个官方的"开发者模式",如果你通过输入一个密钥组合激活,你可以用ssh登录你的手机或使用本地ssh应用程序).因此,即使是最小的Linux设备,我们的小型服务器程序(守护程序,可能会说)也在运行.(将千兆级桌面计算机的浏览器连接到智能手机服务器时,这很有趣.)
服务器程序设计为即使在最小的Linux上运行(正如我所说,它运行在NAS,路由器,智能手机上),它只需要STDLIB和PTHREADS.
这个问题
在Android设备上运行简单的服务器程序的直接方法是什么?
所以,我想用Andrid设备(手机,平板电脑)做同样的事情,就像我在我的webOS设备上做的那样:复制服务器程序并运行它.计算机就是这样,运行程序,不是吗?;)
我还没有真正尝试过,但是应该可以使用您拥有的ARM GCC编译器,或者使用Android NDK提供的编译器来编译本机应用程序,就像在桌面上使用它一样.
如果您的应用程序很小(文件太多),您可以手动(或在简单的Makefile中)管理编译.以下命令来自Android的LuaJIT编译指南:
/tmp$ cat test.c
#include <stdio.h>
int main() {
printf("Hello world!\n");
return 0;
}
/tmp$ NDK=/opt/ndk
/tmp$ NDKABI=8
/tmp$ NDKVER=$NDK/toolchains/arm-linux-androideabi-4.4.3
/tmp$ NDKP=$NDKVER/prebuilt/darwin-x86/bin/arm-linux-androideabi-
/tmp$ NDKF="--sysroot $NDK/platforms/android-$NDKABI/arch-arm"
/tmp$ ${NDKP}gcc $NDKF -o test test.c
/tmp$ file test
test: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), not stripped
Run Code Online (Sandbox Code Playgroud)
显然,如果您使用的是Linux(不是Mac OS X,也不确定Windows),请使用linux-x86
而不是darwin-x86
将路径更改为NDK
安装它的位置.
现在,您必须将已编译的二进制文件移动到您的Android设备,然后运行adb shell
以查看它是否有效:
/tmp$ ADB=/opt/sdk/platform-tools/adb
/tmp$ $ADB push test /data/
332 KB/s (3343 bytes in 0.009s)
/tmp$ $ADB shell
# /data/test
Hello world!
Run Code Online (Sandbox Code Playgroud)
小智 1
你肯定需要一个已root的安卓设备。我建议您安装busybox
以获得一堆不错的命令行工具,例如wget, tar, gzip
等等。您可以使用 获得对设备的 shell 访问权限adb shell
,然后su
获得 root 访问权限。您可以使用adb push
或wget
将服务器放置在设备上。
/system 分区以只读方式安装,并且根据制造商的不同,有很多保护措施限制您在那里写入,因此您应该将服务器复制到 /data 分区上的某个位置(例如mkdir /data/myserver
)。在此之后,一切都应该非常简单。
归档时间: |
|
查看次数: |
844 次 |
最近记录: |