Linux 的魅力: 开发 Nokia N800 03
- UID
- 872238
|
Linux 的魅力: 开发 Nokia N800 03
现在,分析代码:
清单 1. hello, world!
#include <stdio.h>/* stop me if you've heard this one */intmain(void) { printf("hello, world!\n"); return 0; } |
将样例代码清单保存倒一个文件。下面是复杂的部分,交叉编译:
清单 2. 交叉编译
[sbox-SDK_ARMEL: ~] > cc -o hello hello.c[sbox-SDK_ARMEL: ~] > file hellohello: ELF 32-bit LSB executable, ARM, version 1 (SYSV), for GNU/Linux 2.4.17, dynamically linked (uses shared libs), not stripped[sbox-SDK_armEL: ~] > ./hellohello, world! |
就这么简单。您可能想知道如何将该文件放到 tablet 上?如果 tablet 上安装了 shell,并且两个插槽上都安装了 SD 卡,那么很简单:将 tablet 插入 Linux box,在出现的驱动器上装载该文件系统,并复制该文件。卸载、拔除然后观察,驱动器就能神奇地重新装载到 tablet 上。当然,文件在该处的某些位置没有执行权限,但是可以将其复制到卡以外,然后使用 chmod +x。
这对一个文件可行,假设您已经安装了一个终端程序。这种情况下,由于该程序实际上不必在 shell 中运行,所以这样做比较合理。
然而,在实际的应用程序中,您不希望这么做,图形应用程序尤其如此。对于这种情况,您将希望创建合适的软件包文件(N800 使用 Debian 软件包)并让用户以正确的方式安装。那么,当它正常工作起来而不是采用 quick hack 时,就不会像目前这样。
创建 maemo 软件包
developerWorks 拥有关于创建 Debian 软件包的最好文档(请参阅 参考资料)。当然,针对 maemo 有更多,因为将程序安装到 /usr/bin 是不够的;还需要一种方式使 UI 识别软件包并运行它。本文中到 “hello, world!” 样例应用程序的链接不会正常工作,但是没关系;只需在 scratchbox 环境中执行 apt-get source hello-world-app。该软件包布置所有内容,包括图标和启动程序配置。
构建它相当简单:运行 autogen.sh 以生成配置脚本,然后运行 dpkg-buildpackage -rfakeroot。如果因为 $PATH 中没有 dpkg-buildpackage 而失败,请运行 sb-menu,并确保安装了 debian devkit。不要 安装 debian-sarge devkit;它会使 Debian 工具认为您在构建 arm 架构而不是 armel,这样就不能尽善尽美了。而且,N800 会拒绝安装您的软件包,因为它们针对不兼容的架构。因此,不要这样做。
Maemo 应用程序是使用 Gtk widget 构建的。还有一点不可思议的地方是 “osso_...” 系列函数,它们是常规 Gnome dbus 函数的包装器。如果不使用这些函数,您的应用程序可能不能在 maemo 环境中正常工作。“hello world” 样例是了解该环境的好起点。观察它,构建软件包,并确保适应这种方式。
了解这些内容之后,让我们构建一些应用程序。虽然 Hello World 应用程序是非常完善的示例,但是它的内容过多。一般的应用程序不需要在控制面板的状态栏上显示,如 DBUS 服务和常规应用程序以及主页上的 applet 那样。实际上,通常显示一个或两个程序就足够了。此外,执行以上所有工作的需要解答了为何将应用程序实现为所有不同组件使用的共享库。这是共享代码并使各个示例着重处理其实现所特有任务的最简单途径。它适合教学和作为示例;不一定是应用程序的最佳模板。但我们的目标是什么应用程序呢?
N设备模式 |
|
|
|
|
|