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...
给主人留下些什么吧!~~
评论热议
在嵌入式开发中经常见到把交叉编译工具链安装到系统目录下:/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...
给主人留下些什么吧!~~
评论热议
相关文章推荐
- 在ARM-Linux平台上移植SQLite(下)
- 移植mysql到arm平台
- ARM硬件平台上基于UCOS移植Lwip网络协议栈
- 移植 ffmpeg 到 ARM 平台
- 移植linux x86 C库 到android arm平台【交叉编译实现应用增量更新】
- ARM平台上蓝牙协议栈Bluez的移植使用和配置
- Mplayer在ARM平台上的移植总结
- 【实验】Mplayer在ARM平台上的移植
- jsoncpp linux平台编译和 arm移植
- Hisi3516E-基于ARM的linux平台移植curllib
- 移植mysql到arm平台
- 移植MySQL到嵌入式ARM平台
- ARM平台上蓝牙协议栈Bluez的移植使用和配置
- ARM平台上蓝牙协议栈Bluez的移植使用和配置
- LinuxCNC ARM平台移植
- LOG4C移植到ARM平台流程
- 成功移植NET-SNMP到ARM平台(转)
- valgrind的arm平台移植
- qwt的x86平台和arm平台的移植
- ARM平台移植 json-c-0.12