本文转载自:

这篇文章介绍了jpeg库在Linux系统下的编译和移植,经过了亲自的验证,编译首先需要准备以下资源:jpegsrc.v6b.tar.gz(jpeg库),libtool-1.5.26.tar.gz(编译需要的工具),交叉编译工具链(移植到ARM时使用)。

jpegsrc.v6b.tar.gz下载位置:http://115.com/?ct=rar&pickcode=attc36k1f57cah4dq

libtool-1.5.26.tar.gz下载位置:http://115.com/?ct=rar&pickcode=cmmen1rxdh968dbrl

交叉编译工具链下载位置:http://115.com/?ct=rar&pickcode=b33lpqa0qhm8i84xh

前提:编译时需要以root权限进行,JPEG的默认安装路径是/usr/local,无论打算将JPEG库安装在哪儿都必须保证你的安装目录下有以下几个目录:“include”,“lib”,“bin”,“man/man1”,如果没有就自己创建。

首先,先编译一个x86下的版本。1.先解压jpeg库“tar –zxvf jpegsrc.v6b.tar.gz”,解压完后生成一个叫“jpeg-6b”的目录。2.进入该目录配置编译选项“./configure --prefix=/home/jpeg_install/jpeg_x86--enable-shared --enable-static”。逐一解释一下各个选项,“--prefix=/home/jpeg_install/jpeg_x86”:指的是安装目录,这个安装目录下必须包含“include”,“lib”,“bin”,“man/man1”这几个目录;“--enable-shared”:指的是编译动态链接库;“--enable-static”:指的是编译静态链接库。3.配置完编译选项后目录下产生Makefile文件,执行make进行编译,这时编译很可能编译不过,出现以下的错误提示:

“./libtool--mode=compile gcc -O2  -I. -c./jcapimin.c

make: ./libtool:命令未找到

make: *** [jcapimin.lo] 错误 127”

分析一下错误的原因,打开Makefile文件,里面有这样一行“LIBTOOL = ./libtool”;说明编译时需要“libtool”这个工具,然而“jpeg-6b”没有该工具。4.编译libtool,先解压libtool-1.5.26.tar.gz生成一个叫libtool-1.5.26的目录,进入该目录,执行“./configure”;“make”;“make install”;执行完之后在该目录下就是生成了libtool工具,将libtool拷贝到“jpeg-6b”再次执行make进行编译,编译完成后执行“make install”进行安装;执行完毕后在安装目录的lib目录下就会生成所需要的动态链接库和静态链接库。

其次,编译一个arm的嵌入式版本。首先必须要导出交叉编译环境:“exportPATH=$PATH:/home/arm-linux/arm-2013.05/bin”。在之前的博文中有说如何安装交叉编译环境。1.交叉编译libtool:进入目录libtool-1.5.26执行“./configure --host=arm-none-linux-gnueabi”配置libtool的编译环境,参数“--hosting=arm-none-linux-guneabi”是指定交叉编译器的前缀,因为编译的是嵌入式的版本所以编译器需要选择交叉编译环境;配置完编译环境后执行make进行编译,编译完成后将 生成的libtool拷贝到jpeg-6b中。2.交叉编译jpeg库:进入jpeg-6b目录执行“./configure--host=arm-none-linux-gnueabi --prefix=/home/jpeg_install/jpeg_arm”。执行完成后会生成Makefile文件,但是现在还不能直接执行“make”进行编译,需要修改Makefile文件。打开Makefile文件 ,修改以下几句:“CC= arm-none-linux-gnueabi-gcc”;“AR= arm-none-linux-gnueabi-ar rc”;“AR2= arm-none-linux-gnueabi-ranlib”;修改这三句是更改编译环境,然后再执行“make”进行编译。编译完成后执行“make install”进行安装。安装完成后在“/home/jpeg_install/jpeg_arm/lib”会生成所需要的动态链接库,静态链接库(libjpeg.so,libjpeg.a)。

 
 

JPEG库在Linux系统下的编译和移植【转】的更多相关文章

  1. PCL库在Linux环境下的编译安装

    PCL库在Linux环境下的编译安装 PCL库的源码库:https://github.com/PointCloudLibrary/pcl 下载完了之后解压下来 编译库的几个步骤 mkdir build ...

  2. 编译Linux系统下的jrtplib3.9和jthread1.3(arm和ubuntu)

    最近由于学习需要,需要编译jrtplib,网上的资料基本上都是关于3.9以前的版本,而以前的版本基本上都是通过confiugre来配置生成Makefile,而最近的版本却没有这一项,而是使用cmake ...

  3. Linux系统下安装ncurses库

    ncurses库是一个Linux系统下的图形支持的函数库,字符终端处理库,包括面板和菜单. 今天在安装ncurses库的时候遇到了一些问题,现将遇到的问题所叙如下: 首先说明:本次安装采用的是源码包的 ...

  4. 【转帖】Windows与Linux系统下的库介绍

    Windows与Linux系统下的库介绍 http://embeddedlinux.org.cn/emb-linux/entry-level/200903/12-553.html 库的定义 库文件是一 ...

  5. linux系统下C语言调用lapack ,blas库

    在利用C语言编程,经常调用其他的软件包,其中lapack,blas库是最常用的两个库,这里讲下在linux系统下,C语言编程如何调用这两个库: 1.首先讲下blas库的调用,这里以两个向量内积函数为例 ...

  6. 如何查看Linux系统下程序运行时使用的库?

    Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...

  7. Linux系统下Apache2.4.17的安装过程

    Linux系统下安装Apache Server2.4.17.还是先声明一下,Linux命令我不进行讲解,因为我不是讲Linux命令的.有需要注意的地方,我会上图,没什么值得的注意的地方,我就不上图了. ...

  8. 在Linux系统下安装大于mysql5.5版本的数据库

    linux下mysql 5.5的安装方法: 1.安装所需要系统库相关库文件      gcc等开发包,在安装linux系统的时候安装. 2.创建mysql安装目录 # mkdir -p /usr/lo ...

  9. linux系统下svn服务器操作命令

    linux系统下svn服务器操作命令 .输出指定文件或URL的内容.  svncat 目标[@版本]…如果指定了版本,将从指定的版本开始查找. svncat -r PREV filename > ...

随机推荐

  1. robotframework使用requestsLibrary进行接口测试

    一.定义 接口测试:接口测试通常是系统之间交互的接口,或者某个系统对外提供的一些接口服务 分类:RESTful.webservice接口 二.安装 进入C:\Pyhon27\scripts 先要安装r ...

  2. [luoguP2513] [HAOI2009]逆序对数列(DP)

    传送门 f[i][j]表示前i个数,逆序对数为j的答案 则DP方程为: f[1][0] = 1; for(i = 2; i <= n; i++) for(j = 0; j <= m; j+ ...

  3. 【同余】HDU 6108 小C的倍数问题

    http://acm.hdu.edu.cn/showproblem.php?pid=6108 [题意] 给定进制P,求有多少个B满足P进制下,一个正整数是B的倍数的充分必要条件是每一位加起来的和是B的 ...

  4. hdu 1711kmp裸题

    #include<stdio.h> #define N 1000050 int text[N],t[N],next[N],n,m; void getnext() { int j=0,k=- ...

  5. vscode安装插件

    十分简单,知道名字叫啥后,直接搜索,安装,就完了,还可以查看自己已经安装了哪些插件. step1 如图.png step2 image.png step 3 去网上查找想要安装的插件的名字 step ...

  6. BZOJ1739: [Usaco2005 mar]Space Elevator 太空电梯

    n<=400个东西,每个东西有高度<=100,这种东西在堆放过程中不得超过的最大高度<=40000,以及每个东西的个数<=10,求最高能堆多高. 算了下背包复杂度不太对然后开了 ...

  7. 2017"百度之星"程序设计大赛 - 初赛(B)度度熊的交易计划

    n个村庄m条带权路,权值为花费,村庄可以造东西卖东西,造完东西可以换地方卖,给出每个村庄造东西花费a和最多个数b.卖东西价值c和最多个数d,求最大收益. 裸的费用流.然而还WA了一发.很好. 建源向每 ...

  8. CF788E:New task

    n个数字中,每个数有数字A和属性B,每次操作将某个点x的属性B改变为0或1,求满足这样要求的子序列的个数: 下标a<b<c<d<e,而Aa<=Ab=Ac=Ad>=A ...

  9. flex里InputText不能输入中文

    最近做项目都没做任何的更新,今天突然遇到在flex里的InputText无法进行中文输入,晚上查找了下资料,很多原因说是flashplayer的一个BUG. 在网上找到两种解决办法: 1.会出现这种情 ...

  10. ACM-ICPC 2018 沈阳赛区网络预赛 G 容斥原理

    https://nanti.jisuanke.com/t/31448 解析 易得an=n*n+n O(1)得到前n项和  再删除与m不互素的数  我们用欧拉函数求出m的质因数  枚举其集合的子集 进行 ...