移植libjpeg-turbo库到mips32架构跑openwrt系统的开发板上
概述:之前博客中。我们在ubuntu14.04中安装了libjpeg-turbo库,现在我们把库移植到我们的核心为mips架构的开发板上,也算是一个笔记,这样也便于后期翻看。开发板是跑openwrt系统的,下面内容都是基于交叉编译环境等都搭建好的情况下进行的移植。其实移植道理都是一样的,所以如果是不同的开发板,也可参考。(说明:此方式只适用1.5.2,1.5.3版本的libjpeg-turbo)
1,github下载源码
$ git clone https://github.com/libjpeg-turbo/libjpeg-turbo.git
(注意,我那时libjpeg-turbo还是1.5.2版本,现在git clone下来的文件编译安装方式已经
改变,所以对于1.5.2,1.5.3版本可以参考此文章编译移植,如果要下载源码的话可以参考我的
“ubuntu安装libjpeg-turbo”这篇文章,现在如果用git clone下载的是1.5.9版本的库了,下述方法就不适用了)
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!