【1】下载源码与准备交叉工具链
libjpegv6下载地址
【2】解压源码并进入解压后的目录
【3】配置
./configure --prefix=/opt/libdecode --exec-prefix=/opt/libdecode --enable-shared --enable-static -build=i386 -host=arm
注:/opt/libdecode为自定义的目录,用来存放库生成的各种库和头文件
【4】修改 Makefile
CC=gcc 改为 CC=arm-linux-gcc
AR=ar rc 改为 AR=arm-linux-ar rc
AR2=ranlib 改为 AR2=arm-linux-ranlib
【5】确认是否存在/opt/libdecode /include与/opt/libdecode/lib两个目录,若不存在则创建。
【6】make && make install-lib
注:移植jpegsrc.v9.tar.gz时,使用以下的配置
./configure --prefix=/opt/libdecode --host=arm-none-linux-gnueabi
【7】库的使用
安装完成后,可以在 /opt/libdecode/include 目录中找到libjpeg的头文件,以后在编译包含了libjpeg的工程时,必须指定 -I /opt/libdecode/include,同时在链接时需指定 -L /opt/libdecode/lib,若为动态链接,则必须将/opt/libdecode/lib 中的so文件拷贝到运行时环境,且使用export LD_LIBRARY_PATH 将之导出到环境变量。
【1】源码下载网址为:zlib1.2.8
【2】解压并进入目录
tar -xvf zlib-1.2.8.tar.gz
【3】导出CC以确定配置时为arm-linux-
export CC=arm-linux-gcc
【4】配置zlib库,得到Makefile
./configure -shared --prefix=/opt/libdecode
【5】make && make install
指定库安装目录为/opt/libdecode,交叉编译后得到的zlib共享库文件放到了/opt/libdecode/lib中,头文件放到了/opt/libdecode/include中,man手册放到了/opt/libdecode/share/man下
【1】libpng源码下载libpng1.6.6
【2】解压并进入目录
tar -xvf libpng-1.6.6.tar.gz
【3】配置
export LDFLAGS="-L/opt/libdecode/lib"
export CFLAGS="-I/opt/libdecode/include"
export CPPFLAGS="-I/opt/libdecode/include"
./configure --host=arm-linux --enable-shared --enable-static --prefix=/opt/libdecode
【4】make && make install
【5】如果在进行配置前并未按照2中所述安装zlib,则配置运行了一部分后,会报错:
configure: error: zlib not installed
错误提示zlib库未安装,原因是libpng库依赖于zlib库。因此在编译libpng前必须先安装zlib(注意安装的是交叉编译的zlib,而不是给x86平台下使用的zlib)。
【6】指定库安装目录为/opt/libdecode,交叉编译后得到的libpng共享库文件放到了/opt/libdecode/lib中,头文件放到了/opt/libdecode/include中,man手册放到了/opt/libdecode/share/man下
【7】头文件拷贝
进入/opt/libdecode/include中可以看到,默认安装时已经拷贝了png.h pnglibconf.h pngconf.h三个头文件。但是实际做png解码显示图片时发现,只有上述三个头文件(实际上只有png.h有用到)是不够的,还需要另外两个头文件pngstruct.h和pnginfo.h。
在libpng源码目录下执行以下两条指令,将两个头文件人为拷贝过去以备使用即可。
cp pnginfo.h /opt/libdecode/include/
cp pngstruct.h /opt/libdecode/include/
【1】移植
(源码下载、解压、配置、修改Makefile、编译或交叉编译)。移植的目的是由源码得到三个东西:动态库.so,静态库.a,头文件.h
【2】部署动态库以使程序运行起来
【3】部署动态链接库一般有三个位置可以考虑:
如:cp /opt/libdecode/lib/*so* /x210_porting/rootfs/rootfs/lib
如:cp /opt/libdecode/lib/*so* /x210_porting/rootfs/rootfs/usr/lib
cd /x210_porting/rootfs/rootfs/opt/mylib
cp /opt/libdecode/lib/*so* ./
在开发板端export LD_LIBRARY_PATH=/opt/mylib:$LD_LIBRARY_PATH
echo $LD_LIBRARY_PATH
看见/opt/mylib: 即可
(注:我们制作的开发板在Ubuntu挂载的文件系统我的路为:/x210_porting/rootfs/rootfs/)
【4】使用(部署动态库so、部署静态库.a和头文件.h)
【5】注意三个编译链接选项:-I(大i) -l(小L) -L