Android为什么不直接执行Linux的程序?而是自己搞一套?
作者:卡卷网发布时间:2025-02-26 21:28浏览数量:54次评论数量:0次
安卓是可以执行Linux程序的,因为安卓自己就是基于Linux内核,底层的那些东西仍然是靠Linux ELF可执行文件实现。
但是,安卓并不能直接运行传统的基于glibc的Linux软件。由于glibc是遵守LGPL许可的运行库,但是Google的Android为了实现商业用途,就将包括glibc在内的遵守(L)GPL的组件都给砍掉了,并自行开发了一套名为bionic的运行库。实际上bionic库本质上也是libc的一种实现,只不过适用于手机等小型设备,并且Android NDK也是使用bionic库进行编译的。
除此之外,安卓系统本身的文件系统也有限制,同样也限制了Linux软件的安装使用。
不过好在,运行Linux软件我们还有别的方案。其中最典型的方案就是Linux容器,可以借助Termux等软件实现。实际上Termux本身就自带了Linux上的常见软件,可以通过apt/pkg命令安装,其实质上就是将Linux上的常见软件用bionic库重新移植以便在安卓系统运行。
当然,termux自带的那些软件还是不够用。不过好在termux提供了chroot和proot这两种构建容器的方案(前者需要获取root,后者不需要)。关于二者的使用,网上的教程有很多,这里就不再赘述了。
通过容器运行Linux发行版可以实现更丰富的功能,除了能运行Linux上的常见软件,运行图形界面也是没问题的(可以借助vnc x11等进行画面输出,如果使用vnc的话还可以远程连接)
甚至可以用Linux容器,借助wine-ce运行Windows软件。
当然,Linux容器的缺陷还是不少的,例如无法使用systemd(因为无法确保init的PID为1),以及无法调用某些硬件(不过有些缺陷倒是可以用曲线救国的方式解决,除了x11本身就有的转发功能外,声音输入输出可以借助pulseaudio,GPU渲染可以借助virglrenderer(需要挂载/tmp目录到termux的tmp目录)等实现)。不管怎么说,Linux容器还算是可玩性比较高的。
另外,理论上静态编译的程序也可以在安卓平台直接使用,因为静态编译并不需要引用其他动态库,完全可以独立运行。例如qemu经过静态编译后就可以在安卓平台借助终端模拟器直接运行,不过功能上肯定会有所缺失,因为不少功能只能动态编译(例如gtk)。
免责声明:本文由卡卷网编辑并发布,但不代表本站的观点和立场,只提供分享给大家。
- 上一篇:一天只吃一顿饭能瘦吗?
- 下一篇:这么多年第一次听说这个软件是不是很LOW?
相关推荐

你 发表评论:
欢迎