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

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

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

(h c n~"OO1o%w8f1NB0 hsy75编辑前言:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台G:H K)T&b8c_C

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台|uE_r;oc

有关于DFB的使用,在嵌入式系统里面,GUI使用越来越多

:A;w.no,De7\ N;i0

xU1Pz2|P0经常遇到有关DFB的移植啊,编译啊等等问题:个人在自己经验上总结如下:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台o-l-\ n)X$Sl

Qg1Q/bG,SR01 DFB的tar包里面有一个README文档,移植前可以看看

tZH.i UQ0

$F@Fj]+v D g02 可以用make直接编译解包后的src文件ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台V/}H2lu

+} aQF-e?03 这个时候DFB会自动根据系统进行configure

sU?"I HLu!rA:t"X|0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台+F$\*M}%~%lSG1D

4 如果configure成功,DFB会生成自己的Makefile

\)e S+Y2U0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台{fnm0u9e+hF

5 这时候用生成的Makefile就可以ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台RE#G5mdex

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

9]&Mv+i @E AY0

K,]B"I4n \Xgrn4Z~s0./configure 命令ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台qi"T4Zo

B0XAE^d u0这时候dfb会自动生成configure.log文件,你可以逐一查询是否符合你的配制思路

Dj e4e(Y#A0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台z [2Hu4D

当然,上述步骤同时也是所有public lib的基本编译思路

P3m2ED v`WjGM0

H:Ub9_w+T.~)F0


ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台w)h9n2Y&U~1[v }:G

2LHf5H3O0DirectFB与GTK+的依赖关系:
Z_\.|5s3g0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台$JW7yB ?DL&w
一、这就关系到Linux图形领域的关系:
V$J!k q-wP01 Linux 图形领域的基础设施ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台+U \? K2r2W0j n8i
1.1 X Window
8D]'b3T_m/D01.2 SVGALibET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台@7F$@0Lf Vj
1.3 FrameBufferET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Pd#_z&i K!}(E
1.4 LibGGIET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台kt sA/sn
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4D6n#[{Au|s
2 Linux 图形领域的高级函数库
Q1r/v K6J n'h}02.1 Xlib 及其他相关函数库ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台2[L(^E|)B$?b]
2.2 SDLET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台:|q H*b ^z/{4BTQ&O
2.3 Allegro
W0m&w i jR02.4 Mesa3DET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台{qbP}p
2.5 DirectFBET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台cO K3O sonI$AX2_D M
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'[ Bp)ZMc)Q4~
3 面向嵌入式Linux 系统的图形用户界面
Un9~ T3@"xY03.1 MicroWindows/NanoXET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#U%raFj[1k"\;X-U
3.2 OpenGUIET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-|7fb[6p0cn)g)o
3.3 Qt/EmbeddedET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*t:PkO(\1^Y:} L3\
3.4 MiniGUIET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 [(T qFr%n8U tn u
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台yLw:T-Wj!tVC;w
上面可以看到,DitectFB是建立在Linux图形领域基础设施上高级函数库。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-PKd+t:L%I h/t~Z"r
重点是FrameBuffer(因为DirectFB是基于它的):ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台}8^9E-P P FD g
FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。这种接口将显示设备抽象为帧缓冲区。用户可以将它看成是显示内存的一个映像,将其映射到进程地址空间之后,就可以直接进行读写操作,而写操作可以立即反应在屏幕上。
6RZ1e'a:R0 FrameBuffer 只是一个提供显示内存和显示芯片寄存器从物理内存映射到进程地址空间中的设备。所以,对于应用程序而言,如果希望在 FrameBuffer 之上进行图形编程,还需要完成其他许多工作。举个例子来讲,FrameBuffer 就像一张画布,使用什么样子的画笔,如何画画,还需要你自己动手完成。
8G}3\y"A#S0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台IX$[-rVJ^|+E
二、再来看一下DirectFB:
"|'X ~k~_&O8kL1a0 DirectFB 是专注于 Linux FrameBuffer 加速的一个图形库,并试图建立一个兼容 GTK 的嵌入式 GUI系统。它以可装载函数库的形势提供对加速 FrameBuffer 驱动程序的支持。其作用如下:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8aPUZ0@{+y|2FY
1.最大限度的硬件加速
}L:`i tgW}1q02.提供高级图形运算包括多层 alpha 颜色混合模式
|1RPF7f03.利用现有标准无需改变内核
s#dr1Xm,V D.\2Q04.不依赖于库(除 libc 以外)
]vc s#my&x*p05.满足 HMP 的需求
S'K-p&Kf8n0具体:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台"L6XD#lzQ4mO%[2@U
1 图形运算
W3j$Ie [k.Gi0I/J0 DirectFB 支持以下图形运算。这些运算可以由硬件来完成如果芯片组驱动支持的话,或者有软件封装:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台th)fvH
矩形填充/绘制ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 YuU)lO!q$p
三角形填充/绘制ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-e-`A0P9s0Hc/R
画线ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台,s(^.K\K s#B
alpha 颜色混合(a.k.a. texture alpha)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台&j+I vrr)a^
以一个恒定 alpha 混合因子进行颜色混合(a.k.a. alpha modulation)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4x7~iV:`e+e q
九种不同的颜色混合函数对应各个源和目标来支持所有的端口ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台l8BO%ESS'D Kk
色彩调制(a.k.a. color modulation)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#m-r? \\k7|)`p k
源色彩键
T$O-N;Gp {{!ky0 目标色彩键
$N1Tj|q&Uc;R*m%lB$J#c5u02 视窗系统ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台;m8sQ\!x9yqp9V
DirectFB 集成了一个快速的支持半透明的视窗系统。 窗体用了 ARGB 以像素为单位进行颜色混合。并且每个窗体都有属于自己的一个全局透明度。
5^?b;Z F4A%rz2_03 资源管理器
T| H:V p.Kr$T m `$|0 DirectFB 针对视频存储有自己的资源管理器。
kX+T MMk0 像显示层输入设备这样的资源能被锁定进行互斥访问。例:全屏游戏,DirectFB 能对像显示层,窗体以及各种通用的 surfaces 这
#BG*OX"Ak0样的图形目标提供抽象。 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台X:zg z g/\w~
从窗体切换到全屏以及返回到窗体的编程工作被最小化设置到所期望的合作级别。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台)p(f DB&lB
4 图像设备驱动
BHc/| iJ-`1X'n7G0 对于硬件加速 DirectFB 使用了可载入的驱动模块。
%en*[(A8xj1^05 输入设备
F?/K K4y/U7C,Wx0 DirectFB 支持以下输入设备:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台.JyB/I&~ [#HK
? standard keyboardsET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 `a1]Va9NMKU
? serial and PS/2 miceET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台:U.Un@ r&wvK;@
? joysticksET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 | lW |8VF s&N/a!]#U-q
? devices using the linux input layer
-Eq6_5tw6O%[0 ? infrared remote controls (using lirc)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台_iT$I L`$P4krH[
? iPAQ touchscreen
&o.lx(O E0 ? ucb 1x00 touchscreenET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*Cc4XHkl#O+S.`!D
? Microtouch touchscreen
s,`&QLQ6kDo$nf0 ? Sony PI Jogdial
7}\&?c C)|0直接查询硬件或者使用事件缓冲器也是有可能的。
$tjE)w7}z(Ax9`06 加载图像ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台!A ?vJ:te(@|-Y Wt
DirectFB 支持以下图像格式,这些格式可以直接加载到 DirectFB surfaces :ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台%cOq4m f8y
? JPEG (using libjpeg)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-F(r U0\v,c
? PNG (using libpng2)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 R&b%M?6M)\vF(r,j
? GIF (integrated, no library required)
7V3UX*q\l3u1m.~6K0 ? various other image formats (using Imlib2)
ZCu C/E:x&H)o07 视频回放
5l+G.Ym2G1QZ0 DirectFB 支持以下视频格式,这些视频格式可以直接绘制到 DirectFB surfaces:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 bS e-@4r.ab7} w
? video4linux (/dev/video)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台`'Lu:XC!ozQ
? mpeg1/2 (using libmpeg3)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#n9ix)?$_#~%?0VR
? AVI (using avifile)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台7v'r%zcLp&_/k
? MOV (using OpenQuicktime)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台;P-VU%]a-v;j8v
? macromedia flash (using libflash)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台b0P)thC7so
8 字体渲染ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Q"E2SS&Y
DirectFB 支持反别名文本绘制以及字体支持,它支持以下字体格式:
$r-f0g;D&l5Ig G0 ? DirectFB bitmap font
@a^?&ih @ZVv#L S0 ? TrueType (using FreeType2)
J h5{)y}U{0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台0C NX7{4g(G.Xt
三、DirectFB 体系结构
Z;vBq&W4Ah1k$r0
0oZ-c!D6s,L0N/S$Z#N8o01 访问图形硬件设备ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 nFchT:~K*os
DirectFB 依靠内核中 framebuffer 驱动(/dev/fb)所提供现有的接口来访问图形硬件。这就意味着 DirectFB 必须要有一个能正常工作的 framebuffer 驱动才能正常运行。有些芯片组需要在 linux 内核中有特定的 framebuffer 驱动。对于那些没有被支持的芯片组 VESAframebuffer 也能正常工作(但会有些限制)。不管图形加速功能有没有被用到,DirectFB都将用 framebuffer 驱动来完成一下任务:
:A9]_v7l;Z2O7~ e8bB0 ?设置视频模式(分辨率,色深,计时)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台.K I}z2T Ev M p'D]
?从 framebuffer 到卡的内存映射ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台fF)Nd!u/V
?framebuffer 可视端口的改变(为双缓冲)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台K8qKN8Y)m$])wa
当一张卡被 DirectFB 所支持并且当前有一个特定芯片组的 framebuffer 驱动存在于 linux内核当中,DirectFB 将在上面提到的任务中额外的使用framebuffer 驱动来完成以下任务:
!PcUj}*j.e2r0 ?内存映射到卡的内存映射 io 端口
*F,~ ` jM5]_0 ?关闭 framebuffer 驱动内部加速
(Bz{&RY*Y&s0当执行一个特殊的图形运算时,DirectFB 芯片组驱动将访问图形硬件的内存映射 IO 端口来提交命令给卡的加速引擎。这意味着,实际的硬件加速完成完全从用户共享空间。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Y S z9^-{^U
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 f?(\ ybrN
四、GTK+
;^|%`/R,^z0 GTK+ 是一种图形用户界面(GUI)工具包。也就是说,它是一个库(实际上是若干个密切相关的库的集合),它支持创建基于 GUI 的应用程序。可以把 GTK+ 想像成一个工具包,从这个工具包中可以找到用来创建 GUI 的许多已经准备好的构造块。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台%[&Ye'Qz:j
按照最开始的说法,GTK+应该是在DirectFB之上GUI工具。有下面的依赖关系:
C*x+t#Nw#\%GK01.gtk基于xlib,xlib基于libc,libc基于linux内核;DirectFB基于libc,libc基于linux内核,framebuffer可以看做是一种设备。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台(d7T T4Bu(Ss^
2. gtk-> gtk+ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台"v:[-SZj-yh[-p;Sn^
gdk
"`YZ,jFJO6N)w0 glibET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台f+ZW E3zD"YXy
xlib/framebuffer ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台R;b;}krc^S!f
这里想补充一点,ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 MbR_"[Q4n7ji
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*c3T$U? g
五、DirectFB的安装:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台*q`0U I2wr5I a
第一种方法:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台5h'\L$L E D
直接用FC6的“软件包管理者”升级,但是其支持的版本都是0.9.25.1,而现在最新是的版本是1.1.1。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台I Wp:x TW"Z*T` s
第二种方法:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台|*Y6P%cBe.QS
到官网下载最新的版本,http://www.directfb.org/index.php?path=Main%2FDownloads。
d9Pf:S#LII0现在没有FC6的安装方法,只能参照FC3的了:
!W&p^"oG0
J4]J3etwG;o0FC3下DirectFB的安装ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Eig2cci
1、下载下面两个包并解压:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 jEYu5];~%n4M(Pz!n D0CW
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台d&i Hwgi
tar -xzf DirectFB-1.0.0.tar.gzET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台7}~@e%V8b
tar -xzf DirectFB-examples-1.0.0.tar.gz
*MOp,_8c1d"em$lj0
fC-P7i,z02、安装DirectFB-1.0.0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台m F!WdH8EZR

bS"{S'dy0cd /home/DirectFB-1.0.0
mI*x%G kWErM0./configureET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台~-n!h:n)|
makeET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台H,c@M5W?;nn-M2l
make install
$nO*I*MW9G9_0
m#]V;f#nA eE];b _F03、安装DirectFB-examples-1.0.0
.s3|5kL6SMI0
:E_R.Xh%N2mR0a).vi /boot/grub/grub.conf在kernel后面加上vga=0x0317把frambuffer启动,如:
^E ]$f"[ K(B e*\B0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台A*[jY}[,O ^+~/o
#****************start*************#ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8y q3C4O S+u:vZ
title Fedora Core (2.6.9-1.667)
%N$?2tSXa9_0root (hd0,0)ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台X_U4S(E'Z oB/X
kernel /vmlinuz-2.6.9-1.667 ro root=LABEL=/ rhgb quiet vga=0x0317ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台/AxP:a[,R%BF!P"` S
initrd /initrd-2.6.9-1.667.img
CA)[)Gv0#****************stop**************#ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-f5F.Qx U
#更新数据库:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 FNthlX/kd"kt
b).updatedb
/on6n@7\0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台G*Xi Kp9O
c).locate directfb.pc
eMV-]0X0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台2MR\"Vz$SH
找到directfb.pc的路径,例如我的是这样的:
!Kmzk-}?0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台-R.l(c,c`xV b$WP7N
/usr/local/lib/pkgconfig/directfb.pcET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台8e~6? O;_'E
/home/DirectFB-1.0.0/directfb.pc
;|%p'K8?Z0/home/DirectFB-1.0.0/directfb.pc.inET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台f1lm r3O&_
ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台)uKI{;i'IO2i
d).接着设置环境,将第3步得到的pkgconfig库目录加入环境之中:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台G4h[k;N |%o|2I

@Qe lh,d;?8Z7v0export PKG_CONFIG_PATH=/usr/local/lib/pkgconfigET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台S.@u!uzfo
(这样只能在当前终端可以运行,关机后还得自已运行些命令,才能运行dfb程序,如要永久性加入可这样:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台D+N]7W6uS|0i:si2L
如你用的是root用户,可以vi /root/.bash_profile中加入:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台6P;y/NAb3v `0Z:J
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/usr/lib/pkgconfig )
*SK.r-p?M({&H0
$D?8b}/t0e). ./configureET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台;FxkbP%f$n)R[
make
[n:q:@O6qB0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台}4SUM*d,j*[
f).make install
|+{W4?ZZ z0
%]1?+XyWKB"mY0g).将指定directfb的库目录:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台^0a_.x }q
vi /etc/ld.so.conf在最后一行加入:/usr/local/lib,保存退出。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台,n:s Bs5L2~
ldconfig
k3b}A)dJ4mE0然后reboot重启计算机...ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台bnlp$\-Zp
4、测试例子,cd src/ 下,运行:
k}eY4Vh0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#Jqe| fQ
./df_andi
!Akn0\!ub0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台Yu+x Pm1A;ca
另外补充一点点framebuffer的设置 vga=0x317 如下表
9c&v.T1l,k!{1M0代码:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台p$WN `{4Y
| 640x480 800x600 1024x768 1280x1024ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4XjZ'pA)X
----+-------------------------------------ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台4` b FHAT
256 | 0x301 0x303 0x305 0x307
u~+RF,MLsqf032k | 0x310 0x313 0x316 0x319ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台sW{x d
64k | 0x311 0x314 0x317 0x31A
W P"^tP"h"hx"I~016M | 0x312 0x315 0x318 0x31B
c'o*B3j s;k sS0
d9q4@h5^I0ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台'Xy^ A4` w
PKG_CONFIG_PATH这个变量吧
;F!a.M{r-e0 当我们安装了DFB之后没有设置好PKG_CONFIG_PATH变量在你要编译DFB的代码时,他会提示你的lib文件找不到或者提示lib版本太低,这就奇怪啦,为什么刚安装了DFB还会说找不到库文件呢?其实就是这个变量做的好事。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3v b,Gt/|\$` rF
到这里我有必要说说到底pkgconfig 是怎么来的.为什么要这样去设置,当安装了pkgconfig-x.x.x这个包后,就多出了pkg-config,它就是需要PKG_CONFIG_PATH的东东来设置变量。 其实说白了pkg-config就是向configure程序提供系统信息的程序,用来在编译脚本中向编译器传递头文件包含路径或库文件路径.比如软件的版本啦,库的版本啦,库的路径啦,等等这些信息只是在编译其间使用。事实上,要求库的提供者,提供一个.pc文件。你可以 ls /usr/lib/pkgconfig 下,会看到许多的*.pc,用文本编辑器打开会发现里边都是关于软件的版本啦,库的版本啦,库的路径的信息。
_b#IW1[~/G0 所以,configure就是靠这些信息判断你的软件版本是否符合要求。并且得到这些东西所在的位置,要不你要的东西去哪里找呀。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台.yvxk/D5h

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台5q5Aaq K|){2z

mn R0J%G`._*P.|(ND0

"z.a l!X3I0移植过程:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台,c9R8Mk?rJF

/zL6v(n4KN$sv01. download the source package from www.directfb.org

K%],@&p-Bb0

'E.nErN+| V02. unzip the package and run "./configure --prefix=/11 --exec-prefix=/12 --host=arm-linux
7m\ uhQ0"ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 t+R[;e g#Q RF

G0g[W[03.run "make" to compile DFB.它报一个error "/DirectFB-1.4.0/gfxdrivers/matrox", 如果matrox 不是必须的,可以直接在graphics/Makefile 中将MATROX_DIR置空即可。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台.?%B%fCW y\

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台$n0K'lO)FrA

4. make install

+fQz y]B\0

J)l0^6Y![*?-V"|0 所有的头文件将拷贝到/11中,所有的库文件将拷贝到/12中。如果编写应用程序,只需将路径指向这两个目录即可。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台vnru%Ev#Q

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台 ?VH[lK

5. 程序运行ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台3k d2X_/t [`SV

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台o5u;a$o6mf-R Jh

(1)将--exec-prefix指定的目录复制到开发板上,对于上面的例子,就是将12及其子目录拷贝到开发板的根目录中,否则程序会报错, 例如“DirectFB/core/system: No system found”等。ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台ZW&g%IoJc9n)t

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台+k,u8a-LL

(2)export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/12/lib,否则系统会报错,例如“error while loading shared libraries: libdirectfb-1.4.so.0

/Gfj&H}#~x&U{({.[0

3aF1^{.fP ]1{&{0 (3)运行程序,即可。

f?7^)t1pW&su,yB0

ye/eYPH!L0


2012-9 转贴

Cu!d/]7HJ%^;]"r0

0z*|h$t2J J-g02013-2 编辑1,加入lib基本编辑思路

Es [(T[7K0
ref:ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台h ["l;|)\*il

http://www.360doc.com/content/12/0224/22/1671317_189408497.shtmlET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台dL] LT:dp*]

ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台(S%^s1MWv\ l5k

 ET创芯网(EETOP)-电子设计威尼斯人网址、博客、超人气的电子工程师资料分享平台#d_?2W2tAy?


TAG: linux Linux LINUX 实践

 

评分:0

我来说两句

显示全部

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

Open Toolbar
博聚网