移植libjpeg-turbo库到mips32架构跑openwrt系统的开发板上

来源:互联网 发布:免费电子相册制作软件 编辑:程序博客网 时间:2024/05/01 08:18

概述:之前博客中。我们在ubuntu14.04中安装了libjpeg-turbo库,现在我们把库移植到我们的核心为mips架构的开发板上,也算是一个笔记,这样也便于后期翻看。开发板是跑openwrt系统的,下面内容都是基于交叉编译环境等都搭建好的情况下进行的移植。其实移植道理都是一样的,所以如果是不同的开发板,也可参考。

1,github下载源码

$ git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git

2,创建好编译安装的libjpeg-turbo库文件安装位置。(我这里就安装在我的用户目录下的Mips/opt/libjoeg-turbo文件夹下)

$ cd ~$ mkdir Mips && cd Mips$ mkdir opt && cd opt$ mkdir libjpeg-turbo

3,编译安装库

第一步,进入下载下来的源码目录,执行autoreconf -fiv命令

$ cd libjpeg-turbo$ autoreconf -fiv 

第二步执行源码中configure脚本。

./configure --prefix=/home/sky/Mips/opt/libjpeg-turbo CC=mipsel-openwrt-linux-gcc --host=mipsel-openwrt-linux-gnu  --mandir=/home/sky/Mips/opt/libjpeg-turbo/share/man --with-jpeg8 --disable-static --docdir=/home/sky/Mips/opt/libjpeg-turbo/share/doc/libjpeg-turbo-1.5.2 --with-simd

解释一下各项参数意思:
–prefix=/home/sky/Mips/opt/libjpeg-turbo
指定库安装路径,这里就指定到我们刚才创建的文件夹路径。
CC=mipsel-openwrt-linux-gcc
指定编译工具为我们的开发板的交叉编译工具mipsel-openwrt-linux-gcc。
–host=mipsel-openwrt-linux-gnu
指定我们的库要运行的平台。
–mandir=/home/sky/Mips/opt/libjpeg-turbo/share/man
指定man文件(相关命令参考信息)安装路径 。
–with-jpeg8
这个开关启用与libjpeg 版本8的兼容。
–disable-static
阻止安装静态版本的库 。
–docdir=/home/sky/Mips/opt/libjpeg-turbo/share/doc/libjpeg-turbo-1.5.2
指定文档安装路径。
–with-simd
开启SIMD扩展。

第三步,编译安装。

$ make$ sudo make install

第四步,查看Mips/opt/libjpeg-turbo文件夹下内容。
我就偷个懒,直接贴图了。
这里写图片描述

4,移植到开发板
将生成的lib库中的libjpeg.so.8和libturbojpeg.so.0文件复制到开发板中/usr/lib库即可,这样就完成了库的移植。

5,测试
我之前的博客中已经有图片解压及压缩的实现了。那么我们之前用之前的源码即可,唯一改变的就是我们库链接时要用我们交叉编译生成的库,编译程序时也要用交叉编译工具。简单起见,我们只需写一个CMakeLists.txt就行了,用cmake编译。编译完,把可执行程序复制到开发板,运行成功即表示移植成功啦。
CMakeLists.txt内容如下:

cmake_minimum_required(VERSION 2.8)SET(CMAKE_C_COMPILER mipsel-openwrt-linux-gcc)project(SkyJpeg)add_definitions("-O2")include_directories(/home/sky/Mips/opt/libjpeg-turbo/include)link_directories(/home/sky/Mips/opt/libjpeg-turbo/lib)add_executable(SkyJpeg jpgtest.c)target_link_libraries(SkyJpeg jpeg)target_link_libraries(SkyJpeg turbojpeg)

6,参考
如果对configure中的一些参数不太理解,可以看下这篇博客:
configure 时的host build target问题

哈哈,移植的内容就这么多啦,Peace&Love!