Chinaunix首页 | 论坛 | 博客
  • 博客访问: 316572
  • 博文数量: 40
  • 博客积分: 892
  • 博客等级: 准尉
  • 技术积分: 445
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-25 10:20
文章存档

2011年(40)

分类: 嵌入式

2011-02-15 13:56:17

编译平台:x86VMwareUbuntu-10.04

目标平台:SOC3210

交叉编译工具链:gcc-3.4.6(mipsel)

一、获取源码包

1zlib-1.2.5.tar.bz2

2、freetype‐2.3.5.tar.bz2

3libpng-1.2.40.tar.bz2

4、jpegsrc.v6b.tar.gz

5、DirectFB-1.3.0.tar.gz

6DirectFB-examples-1.2.0.tar.gz

二、交叉编译与安装步骤

1、搭建交叉编译工具链

$tar zxvf gcc-3.4.6.tgz -C /opt ——需要解压到/opt目录下

$export PATH=/opt/gcc-3.4.6/bin:$PATH ——设置工具链的环境变量

另外:如果需要在另外的终端和重启机子后都包含这环境变量的话,可以把/opt/gcc-3.4.6/bin: 添加到/etc/environment文件下,然后打开新终端或重启虚拟机。

2、设置编译安装所需环境变量

$mkdir /usr/directfb ——创建安装目录

$export PREFIX=/usr/directfb ——设置安装路径

$export LDFLAGS=-L$PREFIX/lib  ——设置库文件路径

$export CFLAGS="-g -I$PREFIX/include"  ——设置头文件路径

$export CPPFLAGS="-g -I$PREFIX/include" ——设置头文件路径

$export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig ——设置配置信息文件路径

3、编译安装zlib-1.2.5

$tar jxvf zlib-1.2.5.tar.bz2 

$cd zlib-1.2.5

$./configure  --prefix=$PREFIX  --shared   

——不能加--host=mipsel-linux”,否则出错。

$vi Makefile
——Makfile里的gccarranlib全都替换成mipsel-linux-gccmipsel-linux-ar mipsel-linux-ranlib

$make

$make install

4、编译安装freetype‐2.3.5

$tar jxvf freetype‐2.3.5.tar.bz2

$cd freetype‐2.3.5

$./configure  --host=mipsel-linux  --prefix=$PREFIX

$make

$make install

5、编译安装libpng-1.2.40

$tar jxvf libpng-1.2.40.tar.bz2

$cd libpng-1.2.40

$./configure  --host=mipsel-linux  --prefix=$PREFIX  --with-gnu-ld

$make

$make install

6编译安装jpegsrc.v6b

$tar zxvf jpegsrc.v6b.tar.gz

$cd jpeg-6b

$./configure  --host=mipsel-linux  --prefix=$PREFIX  --enable-shared

$vi Makefile

——Makefile里的gcc替换成mipsel-linux-gcc

$make

$make install

可能有出错提示:

无法创建普通文件"/usr/directfb/man/man1/cjpeg.1"

参考解决:

$mkdir /usr/directfb/man /usr/directfb/man/man1

$make install

7、编译安装DirectFB-1.3.0

$tar zxvf DirectFB-1.3.0.tar.gz

$cd DirectFB-1.3.0

$./configure --prefix=$PREFIX --host=mipsel-linux --enable-sdl=no --enable-x11=no --enable-jpeg  --enable-freetype  --enable-png  --with-gfxdrivers=none

参考:如果需要关闭jpeg的支持,可以加上--enable-jpeg=no
$make

注意:可能会有出错提示

/opt/gcc-3.4.6/bin/../lib/gcc/mipsel-linux/3.4.6/../../../../mipsel-linux/b in/ld: warning:  libz.so.1,  needed by /usr/directfb/lib/libpng12.so, not  found (try using -rpath or  -rpath-link)

/usr/directfb/lib/libpng12.so: undefined reference to `deflate'

……

/usr/directfb/lib/libpng12.so: undefined reference to `deflateEnd'

collect2: ld returned 1 exit status

make[2]: *** [directfb-csource] 错误 1

make[2]:正在离开目录 `/……/DirectFB-1.3.0/tools'

参考解决办法:

$cp /usr/directfb/lib/lib* /opt/gcc-3.4.6/mipsel-linux/lib/

——主要是用第五步的libpng-1.2.40所编译出来的库文件

来更新交叉编译工具链的动态库文件libpng12.so

$make

$make install

8、编译安装DirectFBDirectFB-examples-1.2.0

$tar zxvf DirectFB-examples-1.2.0.tar.gz

$cd DirectFB-examples-1.2.0

$./configure  --host=mipsel-linux  --prefix=$PREFIX

$make

$make install

DirectFB与样例交叉编译完成。

三、移植、运行测试

1、制作文件系统

制作一个新的文件系统有利于移植到开发板上。

$cd ramdisk      ——进入根文件系统ramdiskramdisk的制作参考SOC3210文档

$cp /usr/directfb usr    ——必须把交叉编译后的directfb放于此目录,因为DirectFB编译时 已经把这个目录编译到程序中,无法后期设置。

$vi etc/profile

export LD_LIBRARY_PATH=/lib:/usr/lib改为:

  export LD_LIBRARY_PATH=/lib:/usr/lib:/usr/directfb/lib

——设置directfb程序所需库文件路径

否则SOC3210运行会报错,如error while loading shared libraries: libdirectfb-1.3.so.0

保存退出。

$mknod dev/fb0 c 29 0

——创建frame buffer的设备文件

否则SOC3210运行报错:

(!) DirectFB/FBDev: Error opening '/dev/fb0'!

     --> No such file or directory

(!) DirectFB/Core: Could not initialize 'system_core' core!

--> File not found!

$cd dev

$ln -s console tty0

——链接终端

否则SOC3210运行报错:

(!) DirectFB/core/vt: Couldn't open neither `/dev/tty0' nor `/dev/vc/0'!

     --> No such file or directory

(!) DirectFB/Core: Could not initialize 'system_core' core!

--> Initialization error!

$cd .. ——退到上一层

$vi usr/directfb/etc/directfbrc

directfbrcdirectfb程序运行时的配置文件。其具体参数可以参考:

http://blog.chinaunix.net/u3/104335/showart_2061486.html

或者在终端上查看$man directfbrc

改为:

system = fbdev ——设定使用的图形系统linux frame buffer

fbdev = /dev/fb0 ——打开设定的frame buffer (/dev/fb0

wm = default ——设定窗口管理层,默认default(0)

mode = 320x240 ——设定默认的屏幕显示320x240

depth = 16 ——使用二进制位数设置每像素默认的像素深度16

pixelformat = RGB16 ——设置默认的像素格式

mouse-protocol = IMPS/2 ——为一个串口鼠标指定使用的协议

bg-color = 00FFFF ——控制背景的颜色

no-vt ——取消虚拟终端

保存退出。

$cd ..  ——退到上一层

$mkfs.cramfs ramdisk ramdisk-cramfs.img

文件系统制作完成,得到文件系统的镜像文件ramdisk-cramfs.img

2、烧写文件系统到SOC3210

SOC3210上电。

SecureCRT终端中

PMON> set append 'g root=/dev/mtdblock1 rootfstype=cramfs noinitrd init=/linuxrc console=ttyS0,115200 display=truly320'

——设置启动参数

PMON> devcp  tftp://192.168.3.113/ramdisk-cramfs.img  /dev/mtd1

——通过tftp文件系统镜像文件ramdisk-cramfs.img烧写到SOC3210mtd1分区上。

关于TFTP的使用参考《Ubuntu-10.04下安装与使用TFTP

完成后重启,输入命令reboot

3SOC3210运行测试DirectFB样例

进到SOC3210的文件系统

#cd /usr/directfb/bin

#ls

#./df_andi

显示许多移动的企鹅。

类似运行测试其他例子,稳定通过。

重启SOC3210,再运行测试,稳定通过。

至此移植完成

                                            

                                                                             ai011h

                                                                           2011-02-15

                                                                                                                                         

阅读(2632) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~