与图片相关的几个库的编译
来源:互联网 发布:仿砍柴网帝国cms源码 编辑:程序博客网 时间:2024/05/29 08:06
背景:
我的开发板自带的编译器是经过开发商修改的,原来已经带有了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/armv4t/usr/lib
实际使用:
将生成的库(即.so文件及其链接文件)放到开发板根文件系统对应目录,如/lib、/usr/lib等。如果是NFS,可以直接复制,不过要注意链接文件,建议使用cp -a命令。我是打包压缩通过串口(rz)发送到开发板上的,也可以用U盘,等等。
1、zlib
$ cd zlib-1.2.5
配置:
修改生成的Makefile:
将gcc修改为arm-linux-gcc
另外也修改:
RANLIB=arm-linux-ranlib
编译及安装:
$ make install
2、libjpeg
$ cd jpeg-8c
配置、编译、安装:
$ make
$ make install
在lib_pic目录生成bin include lib share等等目录,bin目录有许多相关的程序,不过还没有用过,不知有什么作用。share目录是放手册的,就是平时在Linux下输入man xxx那种手册。我们关心的是include和lib目录,前者放头文件,后者放库文件。
(--preifx不能使用“~”)
如果要使用libjpeg库,就需要在编译时添加-I和-L选项。下面是一个例子:
3、libpng:
libpng:
$ 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目录
使用例子:
4、libgif:
$ 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还没有测试。后面写的程序都是用这次编译的库的。
- 与图片相关的几个库的编译
- 与图片相关的几个库的编译
- 与内存管理相关的几个宏
- Oracle 与SQL相关的几个概念
- 与文件相关的几个时间:
- Linux与网卡相关的几个命名
- 与操作目录相关的几个命令
- 与日期相关的几个常用函数
- 与关机相关的几个命令
- 几个与tomcat启动相关的类
- 与管道相关的几个命令处理
- ViewGroup与测量相关的几个方法
- 与内存管理相关的几个宏
- UCOSII-与任务相关的几个函数
- 一些与编译,链接相关的问题
- 一些与编译,链接相关的问题
- 一些与编译相关的概念
- JSP中与路径相关的常用的几个方法
- 关于Big Endian 和 Little Endian
- 使用TelephonyManager类获取手机状态
- Excel表格计算本周是今年的第几周
- 教你如何各种年份的20,50,100人民币真伪!
- 黑马程序员--Java基础 第一天
- 与图片相关的几个库的编译
- c#多线程抓取网页内容
- Maven项目的标准目录介绍
- 关于django中ModelForm的instance
- HDOJ 2052 Picture
- Simple UDP chater
- 5点钟起床,疯了吗?
- PHP编程学习之路 3
- Jsp实现附件上传功能