ARM平台移植jpeg z png 库

原创 2016年08月31日 12:06:25
   最近移植一些第三方开源库,移植中遇到一些问题,写出来和大家分享。解决困难的过程也是学习的过程。下面就是一份总结吧。
需要移植的库:
root@ubuntu:/work/SKIA/3rdparty# ls
3716C_libs    freetype-2.3.4      libpng-1.2.16  libpng-1.2.44   README
curl-7.20.0    giflib-4.1.6           jpeg-8b          libiconv-1.13.1  libpng-1.2.43  libxml2-2.6.30  zlib-1.2.3
其中curl库不需要移植。

在嵌入式开发中经常见到把交叉编译工具链安装到系统目录下:/usr/local/目录下,在这里提供一个参考方法:
文件 如:arm.env
root@ubuntu:/ubuntu/嵌入式Linux应用开发技术大全# cat arm.env 
export PATH=/ubuntu/嵌入式Linux应用开发技术大全/tools/gcc-3.4.5-glibc-2.3.6/bin:$PATH

source arm.env 这样我们就可以把工具链放在任意位置了。
1.首先编译jpeg库,这个库没有费多大劲直接  ./configure
写了一个shell脚本:
  1. root@ubuntu:/work/SKIA/3rdparty/jpeg-8b# cat build3716C.sh -n
  2.      1    #!/bin/bash
  3.      2    #1. use auto-generated Makefile compile jpeg
  4.      3    echo -e "\nStart configure...\n"
  5.      4    sleep 2
  6.      5    ./configure -host=arm-hisiv200-linux --prefix=/work/SKIA/rootfs/usr/
  7.      6    #2. complile
  8.      7    echo -e "\nStart compiling...\n"
  9.      8    sleep 2
  10.      9    make
  11.     10    #3 make install
  12.     11    echo -e "\nStart install...\n"
  13.     12    sleep 2
  14.     13    make install
  15.     14    #4. copy relevant libs to specified directory.
  16.     15    echo -e "\nCopy libs...\n"
  17.     16    cp -d .libs/libjpeg.so* ../3716C_libs
  18.     17
到安装目录看一下:
  1. root@ubuntu:/work/SKIA/rootfs/usr/lib# ls
  2. libjpeg.a libjpeg.la libjpeg.so libjpeg.so.8 libjpeg.so.8.0.2
  3. root@ubuntu:/work/SKIA/rootfs/usr/lib# file libjpeg.so.8.0.2
  4. libjpeg.so.8.0.2: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped
  5. root@ubuntu:/work/SKIA/rootfs/usr/include# ls
  6. jconfig.h jerror.h jmorecfg.h jpeglib.h
  7. root@ubuntu:/work/SKIA/rootfs/usr/bin# ls
  8. cjpeg djpeg jpegtran rdjpgcom wrjpgcom
  9. root@ubuntu:/work/SKIA/rootfs/usr/share/man/man1# ls
  10. cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 wrjpgcom.1
大概过程都是一样的,在gif库中有一个脚本autogen.sh
  1. root@ubuntu:/work/SKIA/3rdparty/giflib-4.1.6# cat autogen.sh -n
  2. 1 #!/bin/sh
  3. 2
  4. 3 # This script runs commands necessary to generate a Makefile for libgif.
  5. 4
  6. 5 echo "Warning: This script will run configure for you -- if you need to pass"
  7. 6 echo " arguments to configure, please give them as arguments to this script."
  8. 7
  9. 8 srcdir=`dirname $0`
  10. 9 test -z "$srcdir" && srcdir=.
  11. 10
  12. 11 THEDIR="`pwd`"
  13. 12 cd $srcdir
  14. 13
  15. 14 aclocal
  16. 15 autoheader
  17. 16 libtoolize --automake
  18. 17 automake --add-missing
  19. 18 autoconf
  20. 19 automake
  21. 20
  22. 21 cd $THEDIR
  23. 22
  24. 23 $srcdir/configure $*
  25. 24
  26. 25 exit 0

这是一个自动产生Makefile的脚本。生成Makefile后,可以使用上边的build.sh脚本来编译。前提是你安装好automake工具。在ubuntu上:apt-get install automake 

z库还有一点不同,它的configure文件不是automak工具生成的,有自己的格式:
root@ubuntu:/work/SKIA/3rdparty/zlib-1.2.3# ./configure --help
usage:
  configure [--shared] [--prefix=PREFIX]  [--exec_prefix=EXPREFIX]
     [--libdir=LIBDIR] [--includedir=INCLUDEDIR]
在写build.sh脚本的时候就按照这个格式写就可以了。
export CC=arm-hisiv200-linux-gcc
#1 ./configure
echo -e "\n Start configure...\n"
sleep 2
./configure  --share --prefix=/work/SKIA/rootfs/usr/
最让人头疼的是png库,生成png文件后,由于png依赖z库,所以要指定libz 库和头文件的位置。
在build.sh中这样指定:
export CFLAGS=-I/work/SKIA/3rdparty/zlib-1.2.3
export LDFLAGS=-L/work/SKIA/3rdparty/zlib-1.2.3
然后make:
但是总是出现下面的错误:
  1. PNG12_0 '{global:' > libpng.vers.new
  2. /bin/bash: PNG12_0:找不到命令
  3. make[1]: *** [libpng.vers] 错误 127
  4. make[1]:正在离开目录 `/work/SKIA/3rdparty/libpng-1.2.16'
  5. make: *** [all] 错误 2
  6. rm -f libpng.vers libpng.vers.new
  7. PNG12_0 '{global:' > libpng.vers.new
  8. /bin/bash: PNG12_0:找不到命令
  9. make: *** [libpng.vers] 错误 127

将 Makefile中 有libpng.vers的全部注掉,呵呵这是google来,是老外出的主意。

<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(1704) | 评论(0) | 转发(1) |
相关热门文章
给主人留下些什么吧!~~
评论热议
版权声明:本文为博主原创文章,转载请注明出处。

相关文章推荐

Jpeglib移植到arm平台 & 修改支持解码内存中的jpeg数据流

最近在做图像相关的一些工作,遇到了这样一个问题,就是需要把内存中的jpg的数据流转换成只有RGB数据一组数据流(解码内存中的jpeg数据)。很多图像处理工具和开源库都给出了图像解码的函数接口,可是有时...

opencv2.0移植过程中zlib,jpeg,png库的交叉编译

opencv2.0移植过程中zlib,jpeg,png库的交叉编译 宿主系统:ubuntu9.04 交叉编译器arm-linux-gcc-4.3.2 目标板:ARM-Cotex(AM3...

linux 7z命令安装使用及其交叉编译移植到arm linux平台

作者:reille 本博客网址:http://blog.csdn.net/reille/,转载本博客原创文章请注明出处。 本文内容概要: 7z具有很高的压缩率,这对存储空间资源比较敏感的嵌入式系...
  • reille
  • reille
  • 2011-11-19 13:41
  • 10245

android平台移植jpeg-turbo库达到减小jpeg编码体积的目的

我目前所从事的工作是做公司社交类APP的消息服务模块,其中有一个需求就是压缩传输的图片的体积,因为现在一般的手机拍摄的照片体积都在2M左右,所以想办法减小传输过程中的体积是非常有必要的。 一...

JPEG库在Linux系统下的编译和移植

这篇文章介绍了jpeg库在Linux系统下的编译和移植,经过了亲自的验证,编译首先需要准备以下资源:jpegsrc.v6b.tar.gz(jpeg库),libtool-1.5.26.tar.gz(编译...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)