zeuux-universe  - 讨论区

标题:[zeuux-universe] Linux社区应该支持Android吗?

2012年06月05日 星期二 16:17

pansz pan.shizhu在gmail.com
星期二 六月 5 16:17:32 CST 2012

2012/5/23 Kermit <kermit.mei在gmail.com>

>    我今天还特地写了个C程序: int main(void) { return 101; }
> 用root在Android上跑了下,结果只有一句断错误。(是不是我所用参数不对?)
> 如果我编译参数都OK,只是Android屏蔽了这种加载程序的方式,那我觉得Android如果连用户选择什么样的语言,如何开发自己的应用都限制了,又怎么能是纯正的Linux呢?
>

这个不是 android 屏蔽了,而是 android 的 libc 不同,因而你使用 gnu/linux 的 glibc 编译出来的代码不能在
android 上运行。

android 源代码里面有基于 android 的 libc 的交叉编译环境,你使用那个环境编译的 C 代码可以直接扔进 android 里面跑的。

如果是 gnu/linux,你需要创造一个 chroot 的环境,然后在 chroot 环境中部署 android 相关的 libc
那一套东西。(有关程序加载,等等)。

所以,android 并没有限制你,相反它促使你去学习了解更多的知识。
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20120605/52a5af32/attachment.html>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

2012年06月05日 星期二 18:13

Kermit kermit.mei在gmail.com
星期二 六月 5 18:13:13 CST 2012

On Tue, Jun 05, 2012 at 04:17:32PM +0800, pansz wrote:
> 2012/5/23 Kermit <kermit.mei在gmail.com>
> 
> >    我今天还特地写了个C程序: int main(void) { return 101; }
> > 用root在Android上跑了下,结果只有一句断错误。(是不是我所用参数不对?)
> > 如果我编译参数都OK,只是Android屏蔽了这种加载程序的方式,那我觉得Android如果连用户选择什么样的语言,如何开发自己的应用都限制了,又怎么能是纯正的Linux呢?
> >
> 
> 这个不是 android 屏蔽了,而是 android 的 libc 不同,因而你使用 gnu/linux 的 glibc 编译出来的代码不能在
> android 上运行。
> 
> android 源代码里面有基于 android 的 libc 的交叉编译环境,你使用那个环境编译的 C 代码可以直接扔进 android 里面跑的。

确认下,这个C代码通过./hello 运行,应该没有经过Java虚拟机吧:)
我现在正在学习,怎样将这种软件发布到Android市场里,实在是讨厌
Android的Java开发环境,那个真的很垃圾!个人感觉既然SDK有这样的
参数,就应该是可行的,至少有变通的方式:)

> 如果是 gnu/linux,你需要创造一个 chroot 的环境,然后在 chroot 环境中部署 android 相关的 libc
> 那一套东西。(有关程序加载,等等)。
> 
> 所以,android 并没有限制你,相反它促使你去学习了解更多的知识。

恩,我还得再继续实践段时间,才能确定它是否真的木有限制我:)


Thanks
B.R
Kermit

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

2012年06月06日 星期三 14:11

pansz pan.shizhu在gmail.com
星期三 六月 6 14:11:31 CST 2012

2012/6/5 Kermit <kermit.mei在gmail.com>

> 确认下,这个C代码通过./hello 运行,应该没有经过Java虚拟机吧:)
>

肯定没有经过 Java 虚拟机。你制作 android 镜像的时候,甚至 JavaVM
都可以不跑起来,就能运行这样的程序。要知道跑起虚拟机需要很多脚本,那些脚本运行的可都是普通命令行程序。


> 我现在正在学习,怎样将这种软件发布到Android市场里,实在是讨厌
> Android的Java开发环境,那个真的很垃圾!个人感觉既然SDK有这样的
> 参数,就应该是可行的,至少有变通的方式:)
>

一般来说,android root 的软件就是安装了 su busybox 等命令到系统中去了。而 superuser
那个软件(能在市场安装)就能够更新或者替换系统中的 su 命令。——su 命令跟 helloworld 从本质上也没太大区别。

因此,变通的办法是制作并一个 apk,然后这个 apk 的功能是从某个地方下载你的 ./hello 文件,然后将你的 ./hello
更新到系统中的某个可写的路径下,然后。。。就可以运行了。


> 恩,我还得再继续实践段时间,才能确定它是否真的木有限制我:)
>

要说完全没限制也不一定,毕竟来说,有些 gnu 的开源代码是依赖 gnu glibc 的,这意味着如果你使用某些库,就需要把相关的库也移植到
android 的 libc(这意味着修改某些依赖 glibc 的系统调用)。简单的说,就是你必须自己在 android
环境中编译绝大多数你所依赖的第三方库。(android 环境里面提供的库很少)

就我们曾经试验过的来看,glib,dbus,gobject 之类的 gtk 底层库,我们都成功移植进 android 过。
-------------- 下一部分 --------------
一个HTML附件被移除...
URL: <http://www.zeuux.org/pipermail/zeuux-universe/attachments/20120606/234d7858/attachment.html>

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-universe]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号