千家信息网

如何用OpenEmbedded构建嵌入式Linux系统

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"如何用OpenEmbedded构建嵌入式Linux系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读
千家信息网最后更新 2026年11月01日如何用OpenEmbedded构建嵌入式Linux系统

本篇内容介绍了"如何用OpenEmbedded构建嵌入式Linux系统"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1. 下载Embedded-LFS:

svn checkout http://embedded-lfs.googlecode.com/svn/trunk/ embedded-lfs-read-only

2. 创建一个名为xxxx_env.sh的脚本文件:

这里的xxxx代表板子的名称,比如为pxa300写的pxa300_env.sh内容如下:

unset TOOLCHAIN_PREFIXexport BOARD_NAME=pxa300export TOOLCHAIN=/usr/local/arm-linux-4.1.1env.sh arm $1export CFLAGS=$CFLAGS" -mcpu=xscale -fno-strict-aliasing"

这里主要是设置板子的名称和工具链的位置,和一些额外的编译选项。有三个缺省的脚本文件:

openmoko_env.sh 为openmoko手机编译

pxa300_env.sh 为marvell的pxa300编译。

x86_env.sh 编译x86的版本,可以虚拟机里测试。

3. 修改软件包配置文件:

配置文件里的每一项描述一个软件包,同一个软件包可以有多个项,会自动合并起来。如zlib的描述:

[zlib]config-env = export CC=$(TARGET_CC) PREFIX=$(PREFIX)config-cmd = configureconfig-param= –prefix=$(PREFIX) –sharedurl = http://google-desktop-for-linux-mirror.googlecode.com/files/zlib-1.2.3.tar.gz

config-env指定在configure之前要设置的环境变量。

config-cmd指定configure时执行的命令。

config-param指定configure时的参数。

url则是用来下载软件包的位置。

对于用标准autotool管理的软件包,更简单一些。如png的描述:

[png]config-cmd = autoconfurl = http://nchc.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.35.tar.bz2

这里只需要说明是用autoconf配置的和下载软件包的URL就行了。

另外,软件包的位置决定了软件包的编译顺序。

为了在不同平台间重用这些配置信息,可以把这些软件包的配置放在几个文件中:

(1) pkg-$GDK_TARGET.ini 主要用来区分基于TinyX的GTK还是基于DirectFB的GTK。

pkg-directfb.ini 基于TinyX的GTK的缺省配置。

pkg-x11.ini 基于基于DirectFB的GTK的缺省配置。

(2) pkg-$ARCH.ini 这是某类CPU特有的软件包配置。

pkg-x86.ini PC版本特有的配置

pkg-arm.ini arm版本特有的配置

(3) pkg-$BOARD_NAME.ini 板子特有的配置。

(4) pkg-$BOARD_NAME-$GDK_TARGET.ini 板子针对GTK不同后端的特有的配置。

4. 设置编译环境变量(以pxa300为例)

如果想编译基于TinyX的GTK:

[root@localhost embedded-lfs]# . pxa300_env.sh

如果想编译基于DirectFB的GTK:

[root@localhost embedded-lfs]# . pxa300_env.sh directfb

终端会出现下列提示:

==================================================================exported the following vars:==================================================================ARCH=armGDK_TARGET=directfbWITH_ARCH=–with-arch=arm-linuxHOST_PARAM=–host=arm-linuxTARGET_CC=arm-linux-gccTARGET_PLATFORM=arm-linux-PREFIX=/work/mine/googlecode/embedded-lfs/arm/pxa300/usrCFLAGS=-I/work/mine/googlecode/embedded-lfs/arm/pxa300/usr/includeLDFLAGS=-L/work/mine/googlecode/embedded-lfs/arm/pxa300/usr/libPKG_CONFIG_PATH=/work/mine/googlecode/embedded-lfs/arm/pxa300/usr/lib/pkgconfig/PATH=/usr/local/arm-linux-4.1.1/bin:/work/mine/googlecode/embedded-lfs/patches/bin:/usr/lib/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/lib/ccache:/backup/software/jdk1.5.0_19/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/sbin:/usr/sbin::/root/bin==================================================================to build:make -f Makefile.pxa300.directfb all==================================================================

5. 编译

按在设置环境变量时的提示去做就行了,如:

make -f Makefile.pxa300.directfb all

编译的结果会自动安装到ARCH/BOARD下面,如pxa300的编译结果会安装到arm/pxa300目录下。

6. 问题诊断

embedded- lfs的工作原理是根据软件包配置和环境变量,生成一个Makefile文件。如前面的Makefile.pxa300.directfb ,如果编译时出现问题,可以看下这个Makefile里对应软件包的脚本是否正确就行了。比如这是freetype的编译脚本:

packages/freetype-2.3.9.tar.gz:cd packages && wget http://ftp.twaren.net/Unix/NonGNU/freetype/freetype-2.3.9.tar.gzfreetype-2.3.9: packages/freetype-2.3.9.tar.gztar xf packages/freetype-2.3.9.tar.gzfreetype: freetype-2.3.9mkdir freetype-2.3.9/$(ARCH); cd freetype-2.3.9/$(ARCH) && ../configure $(HOST_PARAM) –prefix=$(PREFIX) && make clean; make && make installfreetype_clean:rm -rf freetype-2.3.9/$(ARCH)freetype_source_clean:rm -rf freetype-2.3.9

embedded-lfs的一些限制:

(1) 目前只支持arm和x86

(2) 只在Fedora上测试过,如果系统中正确安装了autotool和libtool相关工具,其它发行版本应该也不会有太多问题。

"如何用OpenEmbedded构建嵌入式Linux系统"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

编译 配置 软件 软件包 文件 变量 板子 版本 环境 脚本 系统 位置 内容 问题 嵌入式 不同 名称 工具 更多 知识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 瑰夏咖啡 广州万易互联网科技有限公司 互联网扶贫科技 互联网金融 金融科技 合肥互联网科技公司 北京互联网络科技有限公司 互联网科技logo 互联网科技大会案例 深圳互联网科技怎么样 济南和联互联网科技有限公司 互联网时代科技改变生活 湖南诚度互联网科技有限公司 崇明区互联网教育科技诚信经营 互联网科技大赛获奖感言 南博望互联网科技有限公司 山东星卡互联网科技有限公司官网 互联网风格科技公司名称 广州互联网高科技取餐柜 安徽零酒互联网科技有限公司 保山浩联互联网科技有限公司 保险科技 互联网保险 奇酷互联网科技公司 上游互联网科技 互联网 科技服务平台 天速互联网络科技有限公司 工业互联网等科技实现智能化赋能 互联网数据科技专业 互联网相关科技技术 互联网风格科技公司名称 恒生科技互联网指数十大成分股
0