Linux 的魅力: 开发 Nokia N800 02
- UID
- 872238
|
Linux 的魅力: 开发 Nokia N800 02
然后再也不需要 root 访问权限。实际上,maemo SDK 安装程序(我使用的是 maemo-sdk-install_3.1.sh;新近的 3.2 更新是从 SDK 内部更新的)将不会作为 root 用户运行,只需拥有 scratchbox 访问的常规用户即可。系统管理员的负担减轻了。
实际上,我发现拥有在不必要的情况下不需要 root 权限的安装程序非常方便。在运行 maemo 安装程序之前,不必实际设置目标;请忽略警告您先运行 sb-menu 的消息(如果转移注意力,可能会在安装程序继续运行时错过它们)。特别感谢 Freenode 的 #maemo 频道的朋友,他们让我确信该错误消息是无害的。
如果您以前从未使用过 scratchbox,则需要简要的介绍。历史上,交叉编译带来了许多挑战。最著名的是难以在目标环境中运行测试程序以及类似程序,而且如果它与主机环境不同,配置起来相当麻烦。
Scratchbox 以尽可能直接的方式解决了这个问题:在使用 CPU 仿真的本地环境中运行本地二进制文件。假设我的主机 CPU 速度大约是目标 CPU 速度的 8 倍,那么这是相当好的解决方案;节省开发时间能带来令人难以置信的好处。这是典型的技术进步例子:可以简单地忽略曾经难以克服的障碍。
Scratchbox 允许您拥有多个构建环境,您可以在其中搭配使用目标和主机二进制文件。如果在 x86 处理器上使用 ARM scratchbox,ARM 二进制文件就能神奇地进行工作,而 “cc” 创建 arm 二进制文件。这相当酷。Nokia 可能通过该设备和其他类似的设备为其开发提供基金。
顺便提一下,如果过了一会儿您只收到晦涩的消息 “Scratchbox is not properly set up!”,那么可能需要启动它。请作为 root 用户,运行 /scratchbox/sbin/sbox_ctl start,应该就能工作。
如果在尝试停止系统之前,没有运行 sbox_ctl stop,则系统可能不会利落地关闭。如果您像我一样出于安装 scratchbox 和尝试安装 SDK 之类的不相干的原因重新引导系统,并且从未将系统设置为引导时运行 scratchbox,那么这可能是您意想不到的。
另一个常见的意外情况是 apt-get 在 scratchbox 中运行失败,不能解析 repository.maemo.org。要改正这个问题,请编辑 /scratchbox/etc/nsswitch.conf 并确保 “hosts:” 行中为 “dns”,而不是 “mdns”(注意这不同于 scratchbox 环境中的 nsswitch.conf)。
熟悉的情形:实现 “hello, world!” 程序
第一步总是实现 “hello, world!” 程序。这不难,但是开始之前,必须选择一个目标。目标是一组相对于特定设备(N800)的设置和工具。对于典型的 scratchbox 环境,必须创建一个目标。Maemo 设置实际上创建了一对目标,顺理成章地命名为 SDK_X86 和 SDK_armEL。可以使用 sb-conf 命令在两者之间切换;例如,sb-conf select SDK_armEL 将选择 arm 目标。 |
|
|
|
|
|