像我儿子一样永远保持好奇和梦想

[b][z]DirectFB 1.4 移植及运行,及介绍

上一篇 / 下一篇  2013-02-20 10:20:09 / 个人分类:practic_linux

.v;\mn6o { q0 hsy75编辑前言:

/Nx+tr,k4Zq M0

6u\v9Z,M"Q0有关于DFB的使用,在嵌入式系统里面,GUI使用越来越多

hj6TnuY@0

L4Ki+|m@9c?8v0经常遇到有关DFB的移植啊,编译啊等等问题:个人在自己经验上总结如下:

.s@^xD` Q4z0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)B^S,U|x

1 DFB的tar包里面有一个README文档,移植前可以看看

Y8z3m8t [ J0

} Ck']N02 可以用make直接编译解包后的src文件

4jvtp0jL*V,`0

.f0{ee:yJ-L TxR&i4Y03 这个时候DFB会自动根据系统进行configure

Y i4z)Ymcs0

IbV F7A'{04 如果configure成功,DFB会生成自己的Makefile龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台k@"x @1{!tg,?_

YP-V dK7U'w2h G:?05 这时候用生成的Makefile就可以

*v4Zx;t ^@0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1sO;QOu'S7o

问题经常出在,configure的过程中,这时候,我们可以进入到src目录,然后执行

-_l.E Xm sLM.A0

YC8J;pb0t KCY,w0./configure 命令龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台+|$U:v {B9\ n

n h3X3t/h0这时候dfb会自动生成configure.log文件,你可以逐一查询是否符合你的配制思路

/Tvx v)lr$P rh0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台+fBk:J @$V X

当然,上述步骤同时也是所有public lib的基本编译思路龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台pI!x i"~4JVq

龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9RC"|.G7TqK


R'^(c;DI*fOB0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1j;i DFsG$X$c

DirectFB与GTK+的依赖关系:
'O#B3@Rg|0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台e3G8lt%^"W:G;I@ \` v
一、这就关系到Linux图形领域的关系:
I2v*H h5Is01 Linux 图形领域的基础设施
+\M}0f+g01.1 X Window
`eaqtC0Y01.2 SVGALib
E)Aq&v"F4| BZ\-hY01.3 FrameBuffer
&T](J ZK;v!D01.4 LibGGI龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台z}g7u|gN6\
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台2|vL,F(d La*k/Y
2 Linux 图形领域的高级函数库
#gWN v Tm02.1 Xlib 及其他相关函数库龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台5yV1z)Z#J3@ O;T j z
2.2 SDL
-gY9f9K%M `02.3 Allegro龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;t$u$ghc!w#@4n4sP
2.4 Mesa3D龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 w+^8{e ?6O#u+y
2.5 DirectFB
!@9WA;ppH0
d'^7c!C6}{(@K03 面向嵌入式Linux 系统的图形用户界面龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台g{ar-cN v
3.1 MicroWindows/NanoX龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台qSW"M;y h T%n2^|
3.2 OpenGUI
&g0M9nrw3rB0J7lo03.3 Qt/Embedded龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%HR4ZGi e1X&[[L
3.4 MiniGUI龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台OF5Gy$\)B,A!c
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,d&r{1G-n/P:s5z ?'D
上面可以看到,DitectFB是建立在Linux图形领域基础设施上高级函数库。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台p$O.F.Z;RUJ
重点是FrameBuffer(因为DirectFB是基于它的):
9qR]'n;y%{0 FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。这种接口将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台.B#~'WT)OU7q
FrameBuffer 只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备。所以,对于应用程序而言,如果希望在 FrameBuffer 之上进行图形编程,还需要完成其他许多工作。举个例子来讲,FrameBuffer 就像一张画布,使用什么样子的画笔,如何画画,还需要你自己动手完成。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台rO A0Z5X;_1O3Z:M

,mIivmA`)R0二、再来看一下DirectFB:
"krQ^ Ts0 DirectFB 是专注于 Linux FrameBuffer 加速的一个图形库,并试图建立一个兼容 GTK 的嵌入式 GUI系统。它以可装载函数库的形势提供对加速 FrameBuffer 驱动程序的支持。其作用如下:
1[~vtD bL.e!J'O"t01.最大限度的硬件加速龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'C}Ct5^/@] [g
2.提供高级图形运算包括多层 alpha 颜色混合模式龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台v/E!g+FI2x
3.利用现有标准无需改变内核龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'U8OpMT6`j Y2_4G
4.不依赖于库(除 libc 以外)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'q[TSm*k
5.满足 HMP 的需求
Q:]j&L-G:I-@0具体:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台u*Zl*f]W
1 图形运算
Md;k}+j_^0 DirectFB 支持以下图形运算。这些运算可以由硬件来完成如果芯片组驱动支持的话,或者有软件封装:
? zoE)w#Y(~0 矩形填充/绘制
RX6g~(P"V0 三角形填充/绘制龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 `N%~^ d-??C
画线龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;Q&W0G3U E f Aeq
alpha 颜色混合(a.k.a. texture alpha)
7i7x4J7MJ:O l*|0 以一个恒定 alpha 混合因子进行颜色混合(a.k.a. alpha modulation)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台^${#m}igH:C
九种不同的颜色混合函数对应各个源和目标来支持所有的端口
}b;w^}0 色彩调制(a.k.a. color modulation)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台"qcq J9R7n D2L#f@
源色彩键
K Kn5tED0 目标色彩键
3H2ADtx BCn8f8e02 视窗系统龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台@r#n1R0Y2yQ+[x_
DirectFB 集成了一个快速的支持半透明的视窗系统。 窗体用了 ARGB 以像素为单位进行颜色混合。并且每个窗体都有属于自己的一个全局透明度。
aT,`C H.g[5Cr03 资源管理器龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台3Z%V%G.AVz,U
DirectFB 针对视频存储有自己的资源管理器。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台k&s6D1C'{m
像显示层输入设备这样的资源能被锁定进行互斥访问。例:全屏游戏,DirectFB 能对像显示层,窗体以及各种通用的 surfaces 这
M7?$v Y/{x0样的图形目标提供抽象。
gK9KV3j.r4G_0 从窗体切换到全屏以及返回到窗体的编程工作被最小化设置到所期望的合作级别。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台2J1fc+ar Q
4 图像设备驱动龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台lbU i0C!g,ece
对于硬件加速 DirectFB 使用了可载入的驱动模块。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台:^(C"AB0T"x&U7P^
5 输入设备龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;B7k`A$y-[aT)\]Z^P
DirectFB 支持以下输入设备:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台fm@;kF
? standard keyboards龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7e6x'F%^`}q)a
? serial and PS/2 mice龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台h!\4v+j?
? joysticks龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台7Sp"O$nA.S
? devices using the linux input layer
X@d/R4u;L0 ? infrared remote controls (using lirc)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9p-y'G*PS
? iPAQ touchscreen龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台s^+HyR V;y
? ucb 1x00 touchscreen
`W1L;hR;Pu5q0 ? Microtouch touchscreen
G!vbj2I l+G[0 ? Sony PI Jogdial
7Gx1H$J Fp+e1{k0直接查询硬件或者使用事件缓冲器也是有可能的。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台e*{1V V4wM
6 加载图像
+D @ w"w `m!}7q0 DirectFB 支持以下图像格式,这些格式可以直接加载到 DirectFB surfaces :
LG2aOO[ }e0 ? JPEG (using libjpeg)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台;sS0I2Ip0x Y0u7_`3C
? PNG (using libpng2)
F3V7L!s?1Z:\ l(t x0 ? GIF (integrated, no library required)
]{6D'Kl4XF0 ? various other image formats (using Imlib2)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台N+t*l"y:m(T D/a"Q*J
7 视频回放龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 Ri@'y1YeIJ
DirectFB 支持以下视频格式,这些视频格式可以直接绘制到 DirectFB surfaces:
0Hl/V` wo0 ? video4linux (/dev/video)
D1Mxe9W0 ? mpeg1/2 (using libmpeg3)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台)h't'F Z4y+r~
? AVI (using avifile)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台RXb!aXJ
? MOV (using OpenQuicktime)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'o,D)_%G5OM!Y!f
? macromedia flash (using libflash)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台X!KA3{0q KF
8 字体渲染龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台LJ-bF8oJ^
DirectFB 支持反别名文本绘制以及字体支持,它支持以下字体格式:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台K"i3iU5Q+B(R8l9w
? DirectFB bitmap font龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台[E5Pro
? TrueType (using FreeType2)
5Tg"w;P2{0
'p6yOx'm:tL7J0三、DirectFB 体系结构龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台*\C%Oy*FV+^%B*N
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台u-|2xX'Y5D
1 访问图形硬件设备
rE6nf ] `.u0 DirectFB 依靠内核中 framebuffer 驱动(/dev/fb)所提供现有的接口来访问图形硬件。这就意味着 DirectFB 必须要有一个能正常工作的 framebuffer 驱动才能正常运行。有些芯片组需要在 linux 内核中有特定的 framebuffer 驱动。对于那些没有被支持的芯片组 VESAframebuffer 也能正常工作(但会有些限制)。不管图形加速功能有没有被用到,DirectFB都将用 framebuffer 驱动来完成一下任务:
/p:Y z d0qM-kM0 ?设置视频模式(分辨率,色深,计时)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台$n |1r5l;@9~z
?从 framebuffer 到卡的内存映射龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台|iA7Nim v7}A
?framebuffer 可视端口的改变(为双缓冲)龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台C2gH:x;oods(f
当一张卡被 DirectFB 所支持并且当前有一个特定芯片组的 framebuffer 驱动存在于 linux内核当中,DirectFB 将在上面提到的任务中额外的使用framebuffer 驱动来完成以下任务:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台?-P-K,CoDC
?内存映射到卡的内存映射 io 端口
e;WkJF7i*p]"R-E~0 ?关闭 framebuffer 驱动内部加速
6J5E O9A/W'?t&I:P0当执行一个特殊的图形运算时,DirectFB 芯片组驱动将访问图形硬件的内存映射 IO 端口来提交命令给卡的加速引擎。这意味着,实际的硬件加速完成完全从用户共享空间。
e&l-PU0tx%r]-^0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1u~0WWu{0W
四、GTK+龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%V UMr\9N oJ
GTK+ 是一种图形用户界面(GUI)工具包。也就是说,它是一个库(实际上是若干个密切相关的库的集合),它支持创建基于 GUI 的应用程序。可以把 GTK+ 想像成一个工具包,从这个工具包中可以找到用来创建 GUI 的许多已经准备好的构造块。
(Y v%g}6L0按照最开始的说法,GTK+应该是在DirectFB之上GUI工具。有下面的依赖关系:
)OU xgWV v kt01.gtk基于xlib,xlib基于libc,libc基于linux内核;DirectFB基于libc,libc基于linux内核,framebuffer可以看做是一种设备。
c&TQ/u#@N02. gtk-> gtk+
'T:wJu+}Z g:os:g{0 gdk龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,Z(V0Xd/Ls^w
glib龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台.T1u$@?vJGhw
xlib/framebuffer 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台rs#yX9WkvCB)N7G
这里想补充一点,龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 l'o9tg|KR
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台D9Liu$I7z|
五、DirectFB的安装:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Y+Q#cB5I c
第一种方法:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1r*as*i5f'f
直接用FC6的“软件包管理者”升级,但是其支持的版本都是0.9.25.1,而现在最新是的版本是1.1.1。
k e+t&^1LB+Z,G0第二种方法:
f&b5Yx(| q+w [ L0 到官网下载最新的版本,#www.directfb.org/index.php?path=Main%2FDownloads。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台v*L&o#} kj5X
现在没有FC6的安装方法,只能参照FC3的了:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台KM8u1j9ML V1TF irv

f-h~z8a!M5d-Pw0FC3下DirectFB的安装龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台_]3P5^ exL9q
1、下载下面两个包并解压:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台v_!`_B

abM6mpJn Ys0tar -xzf DirectFB-1.0.0.tar.gz龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台%A!W&Z'q)Sm
tar -xzf DirectFB-examples-1.0.0.tar.gz
H1n)L%\9q5xz:j%Fqyz0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台G vl(G9h.t*u Z[
2、安装DirectFB-1.0.0
0m*u3T v%N/u};ku0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台V |cdvu6^X
cd /home/DirectFB-1.0.0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台8] N2JmK k%I3z.\N
./configure龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Cj^0RLO,dXgt
make龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 p)eT.j2KAM!o4kFO5|
make install龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台z;L"H k5v M

YEw&N8TM#xnEzM03、安装DirectFB-examples-1.0.0
,P#W5D z l0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台{w~'C#F\2J1[&sG
a).vi /boot/grub/grub.conf在kernel后面加上vga=0x0317把frambuffer启动,如:
O:M lY `)h5A:y0
-H;\'DCw0#****************start*************#
a'C^1^]e9}T_0title Fedora Core (2.6.9-1.667)
5Ulj;SUw0root (hd0,0)
'I6[XH@ [.xQ y*wz0kernel /vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet vga=0x0317龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台^G$[oT(Uo1r v l
initrd /initrd-2.6.9-1.667.img龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台$HL9q V A?y_
#****************stop**************#
n?;| cc;l.@-V bh,I0#更新数据库:
p7et O7X0b).updatedb龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Zq7pu(z0u

q4g#{E+j0c).locate directfb.pc龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台4J;X^\\T3k q
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台G6Am4}| v9Cj,mc
找到directfb.pc的路径,例如我的是这样的:
*}4[VWw&kO8w(^0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台'G#EIv'i NG5O!Y'U g
/usr/local/lib/pkgconfig/directfb.pc龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 ?G vJH
/home/DirectFB-1.0.0/directfb.pc龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台.F MPt M!Eu
/home/DirectFB-1.0.0/directfb.pc.in
/|Gd2zs {0
$AE9`#L-L E-z_0d).接着设置环境,将第3步得到的pkgconfig库目录加入环境之中:
rs0t#}-B2^{0
Y:\e#G Q:@J0U0export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9|-wQ!d\,qH aH
(这样只能在当前终端可以运行,关机后还得自已运行些命令,才能运行dfb程序,如要永久性加入可这样:
G*C d Anl,j2Q0如你用的是root用户,可以vi /root/.bash_profile中加入:
"MXi9SA#N{&?\*]%e0PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig )
3[[DRf_O0
K)wa(}T0e). ./configure龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台*qgBF,d-g1j2Y;s
make龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台pp{)|Z V-F
龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台4kZ)isy6T\
f).make install
*D.Wh d_ QV2`0
8h/dfaT;G+?|~0g).将指定directfb的库目录:龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台DW'g9L0}:oC
vi /etc/ld.so.conf在最后一行加入:/usr/local/lib,保存退出。
&t}8xj!N/n7x0 ldconfig
"~ I.X|Wb)k [Bm0然后reboot重启计算机...
1T8v2OH SL]04、测试例子,cd src/ 下,运行:
"t.@^/E9h;z3d3\0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台9d5z)[^m5af&}
./df_andi
:D0[ zBBD@0
(g%F2wf$C6Ea$w0另外补充一点点framebuffer的设置 vga=0x317 如下表
{$dE w-\,oW(u#e Z0代码:
M5p A$t;u0 | 640x480 800x600 1024x768 1280x1024
gx1[2?*zj l0iCI0----+-------------------------------------龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 Q8Ue[],b
256 | 0x301 0x303 0x305 0x307
RW E-y fRt032k | 0x310 0x313 0x316 0x319
8y'T}5@K,f/^YgW064k | 0x311 0x314 0x317 0x31A
)ku%I {yr,b5FKXs016M | 0x312 0x315 0x318 0x31B
s)c%AWD1pm_0
;G[o,e*s:GG[!}0e0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台Yn{j2d"`6x
PKG_CONFIG_PATH这个变量吧
0ka8WyS7JJ0 当我们安装了DFB之后没有设置好PKG_CONFIG_PATH变量在你要编译DFB的代码时,他会提示你的lib文件找不到或者提示lib版本太低,这就奇怪啦,为什么刚安装了DFB还会说找不到库文件呢?其实就是这个变量做的好事。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(S)S s3\1nvh~w
到这里我有必要说说到底pkgconfig 是怎么来的.为什么要这样去设置,当安装了pkgconfig-x.x.x这个包后,就多出了pkg-config,它就是需要PKG_CONFIG_PATH的东东来设置变量。 其实说白了pkg-config就是向configure程序提供系统信息的程序,用来在编译脚本中向编译器传递头文件包含路径或库文件路径.比如软件的版本啦,库的版本啦,库的路径啦,等等这些信息只是在编译其间使用。事实上,要求库的提供者,提供一个.pc文件。你可以 ls /usr/lib/pkgconfig 下,会看到许多的*.pc,用文本编辑器打开会发现里边都是关于软件的版本啦,库的版本啦,库的路径的信息。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台at{c5]*mg
所以,configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东西所在的位置,要不你要的东西去哪里找呀。

At4wMS:e$}0

e l{b!d5aS0

(c(V4EW!|0

fl7U/H"{:i4n0移植过程:

|c5Ms D0

9i1IJs.R D(L$I1W01. download the source package from www.directfb.org龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台J3U![(v,G/Fk{

龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台PRt+mUU-O

2. unzip the package and run "./configure --prefix=/11 --exec-prefix=/12 --host=arm-linux
0WCW2n/b1rE }0"

|%Jy9Mj0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台&b_Vl%H-e(U9Of1HVX

3.run "make" to compile DFB.它报一个error "/DirectFB-1.4.0/gfxdrivers/matrox", 如果matrox 不是必须的,可以直接在graphics/Makefile 中将MATROX_DIR置空即可。

O#r6[-G(JR*In0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台}:E|(lg}(Tp7c

4. make install

0iG'_!I(qF0

vW*s?Y1G {4M CQ S0 所有的头文件将拷贝到/11中,所有的库文件将拷贝到/12中。如果编写应用程序,只需将路径指向这两个目录即可。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台,s5mA~/J#z^

龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 _b1\o`d

5. 程序运行

LK\lN0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台 ]%T+^-y^%M

(1)将--exec-prefix指定的目录复制到开发板上,对于上面的例子,就是将12及其子目录拷贝到开发板的根目录中,否则程序会报错, 例如“DirectFB/core/system: No system found”等。龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台nR0q z^Wr

龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台P OB)QlU~DB

(2)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/12/lib,否则系统会报错,例如“error while loading shared libraries: libdirectfb-1.4.so.0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台#V1kYt.\8~

龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台xi@^mf

(3)运行程序,即可。

0PnR2b%C0u0

H"@(z`_ CB'i!}c0


2012-9 转贴

Z CBr7Cg?lI g0龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台(Zd["a?Q,\~&`

2013-2 编辑1,加入lib基本编辑思路

Cdr)B] [0
ref:

3@3Sy-@j*Z0#www.360doc.com/content/12/0224/22/1671317_189408497.shtml龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台1U$s g0G({6_6iQ

龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台!xb(P0U\w

 龙8国际_龙8国际下载_龙8国际娱乐官方网(EETOP)-电子设计论坛、博客、超人气的电子工程师资料分享平台e/RHw,Q;[%W-c y


TAG: linux Linux LINUX 实践

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar