与图片相关的几个库的编译 | 迟思堂工作室
A-A+

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

2014-08-30 15:55 嵌入式Linux 暂无评论 阅读 2,420 次

背景:
我的开发板自带的编译器是经过开发商修改的,原来已经带有了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还没有测试。后面写的程序都是用这次编译的库的。



如果本文对阁下有帮助,不妨赞助笔者以输出更多好文章,谢谢!
donate




给我留言