JPEG库在Linux系统下的编译和移植【转】_anfeng3664的博客-程序员宝宝

技术标签: 操作系统  嵌入式  

本文转载自:

       这篇文章介绍了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)。

 
 

转载于:https://www.cnblogs.com/zzb-Dream-90Time/p/7168567.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/anfeng3664/article/details/101182895

智能推荐

微信小程序上传word、txt、Excel、PPT等文件_a_靖的博客-程序员宝宝_微信小程序上传文件

微信小程序开发交流qq群 173683895 承接微信小程序开发。扫码加微信。;正文:目前小程序没有能实现此功能的 API 所以我这里通过使用 web-view 实现;实现流程:1. 在小程序后台配置业务域名2. 在服务器写一个html,实现表单上传文件3.后端php接收文件并存到一个服务器文件夹,把文件名存到数据库以后检索用4.在微信小程序创建一个页面...

三种解决方法:Cannot deserialize value of type `java.util.Date` from String_我的麦的博客-程序员宝宝

一、改前端加入格式化:value-format="yyyy-MM-dd HH:mm:ss"<el-date-picker v-model="formValidate.pastDueTime" value-format="yyyy-MM-dd HH:mm:ss" type="datetime" placeholder="选择日期时间" .._1671465600

【maven实战】18-使用maven-help-plugin描述插件_一直不懂的博客-程序员宝宝

除了访问在线的插件文档之外,还可以借助maven-help-plugin来获取插件的详细信息。可以运行如下命令来获取maven-compiler-plugin2.1版本的信息:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin:2.1这里执行的是maven-help-plugin的descri...

Echarts实现点击节点显示 隐藏子节点_fang·up·ad的博客-程序员宝宝_echarts links属性

问题背景     项目中一个根节点,根节点有七八个子节点,子节点有较多的孙子节点。不美观,因此需要将孙子节点隐藏,当点击子节点时再去显示此子节点对应的孙子节点,再次点击则隐藏孙子节点。问题解决     Echarts的links的source target可以为边的源节点名称的字符串,也支持使用数字表示源节点的索引,所以创建links链接数据节点时source target使用字符串就...

error: 'isinf' or 'isnan' or 'iserr' was not declared in this scope问题解决_成长Bar的博客-程序员宝宝

error: 'isinf' or 'isnan' or 'iserr' was not declared in this scope问题解决        在windows下: _isnan(x)!_finite(x)        在linux下:isnan(x) isinf(x)        为了跨平台,应添加如下代码:int isnan(double x) { return x !=

自己动手搭建React开发环境之一React和ReactDOM_风萧萧梦潇的博客-程序员宝宝_react-dom 安装

导读:React作为近年来大红大紫的view层框架,以其高效、灵活性、强大的社区环境而受到广泛关注。但React也不是直接就能拿来使用的,它必须通过配置相应环境才能更好的开发项目。虽然你可以使用官方推荐的构建React环境方式Create React App ,但有时候也想知道到底它是怎么配置的,所以自己动手搭建React环境也是很到的学习过程。本系列分为5篇,本文是第一篇。

随便推点

MongoDB设置用户名和密码_逆境中徘徊的博客-程序员宝宝

1. 禁止公网访问 Mongodb 端口1.1 网络配置由于网络配置因人而异,需要根据自己实际环境进行配置,不作冗述。大致可以从以下方面禁止。在路由器中关闭端口转发 防火墙 iptables 禁止访问1.2 验证端口能否访问方式在外网机器命令行中运行telnet your.machine.open.ip 270172. 启用验证2.1 创建用户管理员账户新建MongoDB服务:mongod --port 27017 --dbpath /data/db..

win下安装wget以及使用wget_怀璧其罪的博客-程序员宝宝

1、 安装wget网址:http://gnuwin32.sourceforge.net/packages/wget.htm下载http://downloads.sourceforge.net/gnuwin32/wget-1.11.4-1-setup.exe双击安装2、系统环境变量,新建GNU_HOME=D:\Program Files (x86)\GnuWin323、path添加=========...

FastDFS常见问题_小勤奋11的博客-程序员宝宝_fastdfs 85%就写不进去了

FastDFS常见配置和安装错误问题发表于2017 年 01 月 04 日由kenQ:ERROR – file: connection_pool.c, line: 130, connect to 192.168.0.8:23000 fail, errno: 113, error info: No route to hostA:执行过程中可能出现防火墙阻止导致,检测打开端口或关闭防火

fxtoi FLYing_fxt275307894a的博客-程序员宝宝

很遗憾,被我卡掉了 ---lxl

在ASP.NET(C#)中实现在一个文本框输入值后按回车时将光标移到下一个文本框_大头_衍的博客-程序员宝宝

一、页面添加脚本           function   enterkey()     {         if(   event.keyCode   ==   13)         {           event.keyCode   =   9;         }     }     //-->      二、文本框中添加事件 onkeydown="enterkey

[RxJS学习之旅] 之 操作符_chen_晨风的博客-程序员宝宝_rxjs array arguments

操作符操作符就是在 subscribe接上一个Observer之前的一系列数据处理。并且每一个操作都是返回一个全新的Observable对象的函数。import {Observable} from 'rxjs'import {map} from 'rxjs/operators'const onSubscribe=observer=>{ observer.next(1);...

推荐文章

热门文章

相关标签