OpenEmbedded入门(zhuanzai)

本文介绍了OpenEmbedded的基本概念、使用方法以及在嵌入式系统开发中的应用,包括如何获取OpenEmbedded、配置环境、编译软件包等关键步骤,并通过实例展示了如何制作和安装软件包。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenEmbedded入门(zhuanzai)
来源: ChinaUnix博客  日期: 2010.01.02 16:33 (共有条评论) 我要评论
 

OpenEmbedded入门http://xy0811.spaces.live.com/blog/cns!F8AECD2A067A6B17!1311.entry

一、为什么使用OpenEmbedded
1. OpenEmbedded,简称OE,它用来构建和管理嵌入式开发系统(交叉编译、安装、打包)
2. 它可以解决以下问题:
1) 指定编译工具链
2) 程序和库之间的依赖关系
3) 创建镜像
4) 建立目标板上的安装包
5) 建立本地安装包
3. 分为两部分
1) bitbake:构建任务的执行者,它是一组工具集,通过读取扩展名为.bb的文件设置来进行工具,之后简称bb
2) openembedded:元数据,从网上下载得到,这后简称oe
二、如何得到OE
1. 环境
ubuntu 8.04
2. 安装依赖包
$
apt-get install g++ patch help2man diffstat texi2html texinfo ccache
cvs gawk python-psyco texlive texlive-extra-utils git git-core
libgmp3-dev libmpfr-dev dpkg-dev liborbit2-dev libnotify-dev comerr-dev
subversion

3. 下载OE
$ mkdir stuff
$ cd stuff
$ git clone
http://repo.or.cz/r/openembedded.git

大小1G左右, 此链接速度不快,下载完成大概需要7小时左右
$ cd openembedded/
$ git pull release

4. 配置环境
$ cp conf/local.conf.sample conf/local.conf
改其中的TMPDIR和DISTRO
5. 试编一个软件包
三、OE内容介绍
我们把OE分为两部分介绍:基本部分(网络下载),工作部分(编译生成)
1. 基本部分(下载的openembedded目录),主要内容如图




1) classes目录:bb规则的基类,一般的bb文件继承它的规则
2) conf目录:主要配置文件
a) conf/machine目录:目标机配置信息
b) conf/distro目录:oe配置信息
c) conf/bitbake.conf文件:bitbake配置文件
d) conf/local.conf文件:开发者主要改这个文件,其中有两个变量特别重要
TMPDIR 工作目录在哪里,即真正编译的地方
DISTRO 从哪个conf开始文件编译
3) packages目录(有的版本也叫recipes)
含各个软件包的bb文件
2. 工作目录

1) stamps:时间截,由它确定哪些包需要重编,哪些不需要,所以如果想节约时间,把一台机器的环境复制到另一台时,注意它和代码的时间顺序
2) cross:交叉编译工具链(gcc, ar之类)
3) cache:缓存,注意后面编的时候,清除里边的数据
4) work:重要,它就是真正编译的地方,里面包含多个软件包
每个包(即目录)下又有四个子目录
a) temp:编译源码使用的脚本和log信息
b) 包名>版本>:在bb文件中用S表示,源码目录
c) image:目标板的文件系统目录,bb文件中用D表示
d) install:把每个包所需文件都放入了单个目录
bbfile里的FILES_和PACKAGES变量记录了如何控制从image里取出属于该包的文件到单独的目录
5) rootfs:目标板生成的根文件系统
6) staging:存在编译时的临时工具,头文件,库之类放在这里,供编译时使用
7) deploy:最终的包和映像存放在这里
二、编译
1. 只编某一个软件
$ bitbake -b packages/perl/perl_5.8.8.bb
2. 只看不编
$ bitbake -b packages/perl/perl_5.8.8.bb -c listtasks
3. 清理
$ bitbake -b packages/perl/perl_5.8.8.bb -c clean
4. 过程中显示调试信息
$ bitbake -b packages/perl/perl_5.8.8.bb -D
5. 只执行其中一个步骤,在-c后加入
1) fetch:获取源码
2) unpack:解压
3) patch:打补丁
4) configure:配置
5) compile:编译软件包
6) stage:中间环节,安装头文件和库到staging目录,以供其它包编译使用
7) install:安装软件,为后面的打包准备
8) package:产生软件包
9) clean:清理这个版本的软件的整个目录
如果以上任一步,依赖上一步,则先自动执行上一步
三、参考
1. OE中文手册 (从第七章开始看就可以)
http://blog.chinaunix.net/u1/52172/showart_1346396.html
17:34 |
添加评论
|
阅读评论 (1)
|
固定链接
|
[url=javascript:BlogIt('cns!F8AECD2A067A6B17!1311');]写入日志[/url]
|
嵌入式系统
10月11日
Nokia n810开发之三做安装包

一、介绍
a) Debian系统的安装删除软件
i. Debian的安装软件包安装非常简单,配置好网络,不用自己找网站下载,找对应版本;只用一条命令,就下载安装都做好了
n810使用的maemo系统就是Debian的嵌入式版本,包安装方式同Debian相同
ii. deb安装包
deb是Debain的安装包,它的命名方式如下
软件包名称>_版本>-修订号>_平台>.deb
例如:nano_1.3.10-2_i386.deb
b) 自动安装工具apt
i. apt-get工具
/etc/apt/sources.list中放着下载软件的站点,用apt-get命令就可以找到相应软件版本,下载及安装升级软件包,及它依赖的包
$ apt-get install 包名
ii. apt-cache工具
apt软件包管理工具,通过它可查询软件包的状态信息
在你不知道包的具体名字的时候就可以用它查询
$ apt-cache search 包名的正则表达式
c) 手动安装工具dpkg
dpkg是一个Debian的一个命令行工具,它可以用来安装、删除、构建和管理Debian的软件包,与apt工具不同的时,它需要你手动下载和安装,而不是一步到位
i. 将deb包下载到当前目录
$ aptitude download 包名
ii. 安装本地的包
$ dpkg -i 包名
iii. 制作安装包
$ dpkg -b 目录 [包名]
二、制作包
a) 把需要安装的程序及文件复制到临时目录
$ mkdir test
$ mkdir test/DEBIAN
$ mkdir test/usr/bin/ -p
$ touch test/usr/bin/test_xy
$ echo "echo hello" >test/usr/bin/test_xy
$ chmod 777 test/usr/bin/test_xy
b) 制做打包所需脚本
$ vi test/DEBIAN/control 编辑内容如下
Package: securing-debian-howto.zh-cn
Priority: extra
Section: doc
Maintainer: tony
etony@tom.com
Architecture: all
Version: 3.0
Description: Securing Debian Manual
c) 打包
$ dpkg -b test haha.deb
三、安装包
a) 从当前目录直接安装
$ dpkg -i haha.deb
$ /usr/bin/test_xy 此时就可以执行安装后的test_xy
b) 在n810上安装
在n810上安装的包可以在scratchbox中编译后打包
就是用usb线插电脑上,把安装包拷到PDA的miniSD卡上,在PDA上点deb包安装
四、参考:
a) deb包制作方法
http://debian.linuxsir.org/doc/inthedebianway/debian_build_package.html
apt和dpkg命令使用说明
http://i18n.linux.net.cn/others/APT_and_Dpkg.php
21:38 |
添加评论
|
固定链接
|
[url=javascript:BlogIt('cns!F8AECD2A067A6B17!1141');]写入日志[/url]
|
嵌入式系统
9月21日
Nokia n810开发之二应用程序
一、简介及建立环境见上篇:Nokia n810开发之一搭建环境
二、做最简单的程序
1. 登录到scratchbox
$ /scratchbox/ login
2. 程序
1) 建立程序目录结构
> mkdir hello
> cd hello
> touch hello.c Makefile hello.desktop
2) 编辑源码文件:hello.c
#include
#include

int main(int argc, char** argv) {
GtkWindow* window;
GtkLabel* label;
gtk_init(&argc, &argv);
window = g_object_new(GTK_TYPE_WINDOW,
"border-width", 12,
"title", "Hello GTK+",
NULL);
label = g_object_new(GTK_TYPE_LABEL,
"label", "Hello World!",
NULL);
gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(label));
gtk_widget_show_all(GTK_WIDGET(window));
g_print("main: calling gtk_main\n");
gtk_main();
g_print("main: returned from gtk_main and exiting with success\n");
return EXIT_SUCCESS;
}
3) 编辑Makefile文件:Makefile
hello:
gcc hello.c -o hello `pkg-config --cflags gtk+2.0 --libs`

install:
cp hello /usr/bin/
cp hello.desktop /usr/share/applications/hildon/
4) 编译桌面图标文件:hello.desktop
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Hello
Exec=/usr/bin/hello
Icon=qgn_list_gene_default_app
图片文件一般情况如下:
/usr/share/icons/hicolor/xxx/*.png
5) 在虚拟环境下编译安装
> make; make install
6) 在虚拟环境下运行
a) 在Ubuntu系统上启动Xpref
$ Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac -extension Composite
b) 直接运行
> export DISPLAY=:2
> hello
此时可看到在Xpref的窗口中出现hello界面
c) 在n810平台上运行
> export DISPLAY=:2
> af-sb-init.sh start // 若已经启动,则先stopstart
点开菜单(左下图标)->Extras->Hello
7) 代码对应的开发机目录
假设我建立的用户是xieyan,那么建立的hello的源码目录对应开发机系统的
/scratchbox/users/xieyan/home/xieyan/hello
8) 注意
这个程序在命令行执行正常,但是如果在n810系统的菜单中调出,不一会儿就会自动被kill掉,原因是没有加osso库的调用
3. 安装
1) 做deb安装包,见《nokia n810开发指南3》
2) 就是用usb线插电脑上,把安装包拷到PDA的miniSD卡上,在PDA上点deb包安装
3) 如果直接运行程序,连通wifi后直接用scp复制也可以
三、参考
1. maemo应用程序详细例程:
http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Application_Development/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值