当前位置: 首页 > 嵌入式Linux > 正文

与图片相关的几个库的编译

背景:
我的开发板自带的编译器是经过开发商修改的,原来已经带有了libjpeg、libpng库了。现在想换个新的版本。最近想研究jpeg文件,想在开发板的屏幕上显示出来,于是在网上找了点资料,不过绝大资料都是6b这个版本的,而这个版本是1998年发布的,至今仍在使用。截至本文发表时,最新版本是8c,2011年1月发布的。同时,也顺便将png、gif两个库一起编译了。我是个喜欢折腾的人,自从大三买了开发板,简单地写了个点灯的裸机程序后,就入手移植系统了,后来以移植u-boot,原因很简单,不想用人家已经做好的东西,自己弄的东西,对原理性,了解会稍微深入一些。——这些事情是仁者见仁,智者见智了。

环境假设:

arm-linux-gcc 4.3.2

编译临时目录:/home/latelee/my2440/lib_build

编译后库及头文件目录:/home/latelee/my2440/lib_pic/

如果程序使用到这些库,则在编译时需要使用这些目录。当然,如果不想这些麻烦,就可以将头文件与库放到交叉编译器对应的目录,笔者的交叉编译器目录如下:

./arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include./arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/usr/lib

实际使用:

将生成的库(即.so文件及其链接文件)放到开发板根文件系统对应目录,如/lib、/usr/lib等。如果是NFS,可以直接复制,不过要注意链接文件,建议使用cp -a命令。我是打包压缩通过串口(rz)发送到开发板上的,也可以用U盘,等等。

1、zlib

$ tar jxf zlib-1.2.5.tar.bz2$ cd zlib-1.2.5

配置:

$ ./configure –shared –libdir=/home/latelee/my2440/lib_pic/ –prefix=/home/latelee/my2440/lib_pic/

修改生成的Makefile:

将gcc修改为arm-linux-gcc

另外也修改:

AR=arm-linux-ar rcRANLIB=arm-linux-ranlib

编译及安装:

$ make$ make install

2、libjpeg

$ tar zxf jpegsrc.v8c.tar.gz$ cd jpeg-8c

配置、编译、安装:

$ ./configure –prefix=/home/latelee/my2440/lib_pic/ –host=arm-linux CC=arm-linux-gcc$ make

$ make install

在lib_pic目录生成bin include lib share等等目录,bin目录有许多相关的程序,不过还没有用过,不知有什么作用。share目录是放手册的,就是平时在Linux下输入man xxx那种手册。我们关心的是include和lib目录,前者放头文件,后者放库文件。

(–preifx不能使用“~”)

如果要使用libjpeg库,就需要在编译时添加-I和-L选项。下面是一个例子:

$ arm-linux-gcc jpeg_test.c fb_utils.c -I/home/latelee/my2440/lib_pic/include -L/home/latelee/my2440/lib_pic/lib -ljpeg -Wall -o jpeg_test

3、libpng:

libpng:

$ tar zxf libpng-1.5.4.tar.gz$ cd libpng-1.5.4

$ ./configure –prefix=/home/latelee/my2440/lib_pic/ –host=arm-linux CC=arm-linux-gcc –with-zlib-prefix=/home/latelee/my2440/lib_pic/

$ make

$ make install

生成的目录跟libjpeg相似,不过实际的头文件在include/libpng15,include下的只是链接文件,为方便以见,将链接文件删除,复制libpng15目录的头文件到include目录

使用例子:

$ arm-linux-gcc png_test.c fb_utils.c -o png_test -I/home/latelee/my2440/lib_pic/include -L/home/latelee/my2440/lib_pic/lib -lpng

4、libgif:

$ tar jxf giflib-4.1.6.tar.bz2$ cd giflib-4.1.6

$ ./configure –prefix=/home/latelee/my2440/lib_pic/ –host=arm-linux CC=arm-linux-gcc

$ make

$ make install

本文只是简单做一些笔记,没有涉及深入研究库的使用。因为本文题目就是“编译笔记”。关于这几个库的下载,请用google输入库的名称,就能找到了。开源项目一般会有主页,或者是独立的域名,或者是在sourceforge上。进入主页时,会在显示的下载提示,或者是“Download”、或者是“the source code is here”,……,等等。

更新:
写此文一段时间后,只是测试了前三个库,libgif还没有测试。后面写的程序都是用这次编译的库的。

本文固定链接: http://www.latelee.org/embedded-linux/library-about-picture.html

如无特别说明,迟思堂工作室文章均为原创,转载请注明: 与图片相关的几个库的编译 | 迟思堂工作室

目前暂无评论

发表评论

*

快捷键:Ctrl+Enter