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

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

  1. svg上传服务器无法显示,让WordPress支持上传SVG格式图片并显示在媒体库中的方法...

    让WordPress支持上传SVG格式图片并显示在媒体库中的方法 发布时间:2020-12-11 14:18:12 来源:亿速云 阅读:167 作者:小新 这篇文章将为大家详细讲解有关让WordPre ...

  2. 图片读取器和皮肤库设计

    图片读取器和皮肤库设计 无论是图片读取器还是皮肤库设计,其实只是点到为止,没有深入做出很好的视觉效果,请见谅. 一.实验目的 1.结合实例,熟练分析并绘制UML类图: 2.熟练使用java实现两种常见 ...

  3. Latex合并及插入图片相关问题

    latex图片并排 1.并排摆放,共享标题 \begin{figure}[htbp] \centering \includegraphics{left} \includegraphics{right} ...

  4. PHP用gd库给图片添加水印,php用GD库给图片添加水印

    php用GD库给图片添加文字水印,整个代码比较简单,DEMO如下: /*打开图片*/ //1.配置图片路径 $src = "aeroplane.jpg"; //2.获取图片信息 $ ...

  5. 图像处理---《在图片上打印文字 FreeType库》

    图像处理---<在图片上打印文字 FreeType库> 目的:想在处理之后的图像上打印输出结果. 方法: (1)只在图像上打印 数字.字母的话:                 1.Mat ...

  6. 【Android】RecycleView简单仿漫画APP图片相关样式

    真的真的想不到起什么标题好了,这次的内容真的是太简单了,没有什么挑战性,一天以内就完成了.最近在学kotlin,也会有一份kotlin的代码,鉴于很多人都是从java开始进行android开发的,ko ...

  7. 电机控制驱动相关的PCB元件库带3D模型

    电机控制驱动相关的PCB元件库带3D模型 电机控制和驱动部分的电路板制作过程中,需要各种引脚接口,光耦隔离芯片,智能功率芯片IPM,各种开关按键,电容,发光二极管以及显示器等必要的器件,小编有轻微的强 ...

  8. Android 悬浮窗,绝对是目前相关悬浮窗开源库最完美的适配方案

    PerfectFloatWindow 项目地址:Alonsol/PerfectFloatWindow 简介: android 全局悬浮窗,目前已经适配华为,小米,vivo,oppo,一加,三星,魅族, ...

  9. latex 图片相关设置

    latex 图片相关设置 基本格式: \begin{figure}[图片位置设置] 图片格式(左对齐,居中,右对齐等) \includegraphics[图片大小]{图片存放位置} \twofigur ...

最新文章

  1. 推荐一个.NET下转Json的利器,FastJson
  2. 聊聊JS与设计模式之(工厂Factory)篇------(麦当劳的故事)
  3. 等价类划分方法的应用
  4. 14 篇论文为你呈现「迁移学习」研究全貌 | 论文集精选 #04
  5. 【练习】2021下半年数据结构刷题笔记和总结 (三)栈 队列 链表 枚举算法
  6. OpenGL point shadow点阴影的实例
  7. cpu封装技术 cpu知识 zol术语
  8. 删除电脑中的mysql数据库吗_【数据库】怎么彻底删除mysql服务?
  9. tomcat.exe java home,tomcat.exe启动和startup.bat启动的不同
  10. android bundle传递参数,android – 使用bundle将数据从一个活动传递...
  11. 3.4_activity_selection_活动选择问题
  12. k8s学习:部署 PHP + Redis 留言薄
  13. 捕获input 文本框内容改变的事件(onchange,onblur,onPropertyChange比较)
  14. php抓取网络电视源,电视直播源抓取工具箱
  15. 如何免费下载DEM数据
  16. P5960 【模板】差分约束算法 · spfa
  17. mysql按年级班级排序_一个sql语句的问题,按照如何按照年纪班级科目显示名次...
  18. 三维动画与企业宣传片的制作方案
  19. 爱普生Epson Stylus Photo P50 打印机驱动
  20. 安全环保专题培训考试题

热门文章

  1. Mysql 数据库字符集转换及版本升级/降级的详细教程
  2. 小米正式发布潮流手机小米Civi 1S和小米智能家庭屏10两款重磅新品
  3. 2022年2月插电混动保值率TOP5:比亚迪车型上榜量第一
  4. 亿纬锂能:公司被选定为博世的供应商 为博世提供锂离子动力电池
  5. 苹果欺诈性营销?iPad mini 6因“果冻屏”遭用户集体诉讼
  6. B端出行,缺一个盒子汽车么?
  7. Siri为什么越来越蠢?
  8. 零氪科技与诺华达成战略合作 共同打造数字化医疗创新模式
  9. 产业链人士:LCD显示驱动芯片价格有望趋于稳定
  10. 岚图FREE店内静态体验