欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-11 17:09:58
...

概述:之前博客中。我们在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.21.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文件夹下内容。
我就偷个懒,直接贴图了。
移植libjpeg-turbo库到mips32架构跑openwrt系统的开发板上

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!