您的位置:首页 > 其它

ARM平台移植jpeg z png 库

2016-08-31 12:06 477 查看
   最近移植一些第三方开源库,移植中遇到一些问题,写出来和大家分享。解决困难的过程也是学习的过程。下面就是一份总结吧。需要移植的库:root@ubuntu:/work/SKIA/3rdparty# ls3716C_libs    freetype-2.3.4      libpng-1.2.16  libpng-1.2.44   READMEcurl-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.envroot@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脚本:root@ubuntu:/work/SKIA/3rdparty/jpeg-8b# cat build3716C.sh -n

     1    #!/bin/bash

     2    #1. use auto-generated Makefile compile jpeg

     3    echo -e "\nStart configure...\n"

     4    sleep 2

     5    ./configure -host=arm-hisiv200-linux --prefix=/work/SKIA/rootfs/usr/

     6    #2. complile

     7    echo -e "\nStart compiling...\n"

     8    sleep 2

     9    make

    10    #3 make install

    11    echo -e "\nStart install...\n"

    12    sleep 2

    13    make install

    14    #4. copy relevant libs to specified directory.

    15    echo -e "\nCopy libs...\n"

    16    cp -d .libs/libjpeg.so* ../3716C_libs

    17
到安装目录看一下:root@ubuntu:/work/SKIA/rootfs/usr/lib# ls

libjpeg.a libjpeg.la libjpeg.so libjpeg.so.8 libjpeg.so.8.0.2

root@ubuntu:/work/SKIA/rootfs/usr/lib# file libjpeg.so.8.0.2

libjpeg.so.8.0.2: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

root@ubuntu:/work/SKIA/rootfs/usr/include# ls

jconfig.h jerror.h jmorecfg.h jpeglib.h

root@ubuntu:/work/SKIA/rootfs/usr/bin# ls

cjpeg djpeg jpegtran rdjpgcom wrjpgcom

root@ubuntu:/work/SKIA/rootfs/usr/share/man/man1# ls

cjpeg.1 djpeg.1 jpegtran.1 rdjpgcom.1 wrjpgcom.1
大概过程都是一样的,在gif库中有一个脚本autogen.shroot@ubuntu:/work/SKIA/3rdparty/giflib-4.1.6# cat autogen.sh -n

1 #!/bin/sh

2

3 # This script runs commands necessary to generate a Makefile for libgif.

4

5 echo "Warning: This script will run configure for you -- if you need to pass"

6 echo " arguments to configure, please give them as arguments to this script."

7

8 srcdir=`dirname $0`

9 test -z "$srcdir" && srcdir=.

10

11 THEDIR="`pwd`"

12 cd $srcdir

13

14 aclocal

15 autoheader

16 libtoolize --automake

17 automake --add-missing

18 autoconf

19 automake

20

21 cd $THEDIR

22

23 $srcdir/configure $*

24

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 --helpusage:  configure [--shared] [--prefix=PREFIX]  [--exec_prefix=EXPREFIX]     [--libdir=LIBDIR] [--includedir=INCLUDEDIR]在写build.sh脚本的时候就按照这个格式写就可以了。export CC=arm-hisiv200-linux-gcc#1 ./configureecho -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.3export LDFLAGS=-L/work/SKIA/3rdparty/zlib-1.2.3然后make:但是总是出现下面的错误:PNG12_0 '{global:' > libpng.vers.new

/bin/bash: PNG12_0:找不到命令

make[1]: *** [libpng.vers] 错误 127

make[1]:正在离开目录 `/work/SKIA/3rdparty/libpng-1.2.16'

make: *** [all] 错误 2

rm -f libpng.vers libpng.vers.new

PNG12_0 '{global:' > libpng.vers.new

/bin/bash: PNG12_0:找不到命令

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) |

0
上一篇:在嵌入式中使用gdbserver

下一篇:shell脚本编程

相关热门文章
SHTML是什么_SSI有什么用...

卡尔曼滤波的原理说明...

shell中字符串操作

关于java中的“错误:找不到或...

linux设备驱动归纳总结...

linux dhcp peizhi roc

关于Unix文件的软链接

求教这个命令什么意思,我是新...

sed -e "/grep/d" 是什么意思...

谁能够帮我解决LINUX 2.6 10...

给主人留下些什么吧!~~

评论热议
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: