libjpeg开源库的使用

本文详细介绍了如何进行libjpeg库的移植,包括下载源码、配置、修改Makefile、编译和安装步骤。移植完成后,动态库.so文件存放在指定目录,头文件则位于对应的include目录。在部署时,动态库可放于系统库路径或自定义目录,并通过LD_LIBRARY_PATH环境变量指定。在编译工程时需使用-I和-L选项指定头文件和库路径。
AI助手已提取文章相关产品:

libjpeg库移植

  1. 下载源码jpegsrc.v9.tar.gz与准备交叉工具链
  2. 解压源码并进入解压后的目录。
    1.配置:
    /opt/libdecode 是自定义的文件夹,用来存放.so .a和头文件
    arm-none-linux-gnueabi 是交叉编译工具,改成自己的
./configure --prefix=/opt/libdecode --host=arm-none-linux-gnueabi 

执行之后会生成Makefile

2.修改 Makefile:
CC=gcc 改为 CC=arm-linux-gcc
AR=ar rc 改为 AR=arm-linux-ar rc
AR2=ranlib 改为  AR2=arm-linux-ranlib

arm-linux-gcc是自己的交叉编译工具名,如果没有导出到环境变量,则需要写成全路径
参考:Ubuntu交叉编译工具链导出到环境变量

确认是否存在/opt/libdecode /include与/opt/libdecode/lib两个目录,若不存在则创建。
3.执行make
4.执行make install-lib 将编译生成的库文件、头文件、可执行文件分别装载到–prefix --exec-prefix所指定的那些目录中去

libjpeg就移植完成了
移植完成后.so文件存放在/opt/libdecode/lib中
头文件存放在/opt/libdecode /include中

部署:
动态库.so文件放到开发板的根文件系统中(动态链接,运行时需要)去,把静态库.a文件和头文件.h文件放到ubuntu的文件系统中(编译和静态链接用)即可。

使用
在编译包含了libjpeg的工程时,
必须指定 -I(大写i) /opt/libdecode/include,

CFLAGS += -I $(shell pwd)/include -I/opt/libdecode/include

同时在链接时需指定 -L /opt/libdecode/lib,

LDFLAGS := -ljpeg  -L/opt/libdecode/lib

部署动态库
(1)第一种情况:放到/lib或者/usr/lib下,这样不需要给系统指定库路径,就能自动找到。(开发板挂载的根文件系统)
(2)第二种情况:对于一些不常用的库,找个自定义的第三方的目录,单独将这些不常用的库放置,然后将该自定义第三方目录导出到环境变量LD_LIBRARY_PATH下。

如自定义/opt/mylib ,开发板运行起来后在命令行低下输入

export LD_LIBRARY_PATH=/opt/mylib:$LD_LIBRARY_PATH  

可用echo $LD_LIBRARY_PATH查看是否导出

另:可以写个shell脚本来执行


三个编译链接选项:-I -l -L

  • -I(大写i)是编译选项(预处理选项CFLAGS或者CPPFLAGS中指定),用来指定预处理时查找头文件的范围的。
  • -l(小写L)是链接选项(LDFLAGS中指定),用来指定链接额外的库(譬如我们用到了数学函数,就用-lm,链接器就会去链接libm.so;那么我们使用了libjpeg,对应的库名字就叫libjpeg.so,就需要用-ljpeg选项去链接)
  • -L是链接选项(LDFLAGS中指定),用来告诉链接器到哪个路径下面去找动态链接库。

总结:-I(大写i)指定预处理时查找头文件的范围,-l(小写L)是告诉链接器要链接的动态库的名字,而-L是告诉链接器库的路径

您可能感兴趣的与本文相关内容

一、先添加库libjpeg.so for arm: 交叉编译libjpeg 交叉编译工具 版本:3.4.1 路径:/usr/local/arm/3.4.1/bin 编译libjpeg前要确保系统装了libtool库。否则编译不成功。 1、下载libjpeg源码:ftp://ftp.uu.net/graphics/jpeg/jpegsrc.v6b.tar.gz 2、解压缩 jpegsrc.v6b.tar.gz 3、进入/jpeg-6b目录配置: ./configure --host=arm-linux --enable-shared --prefix= TARGETDIR 4、进入自动生成的Makefile,修改 CC= arm-linux-gcc AR= arm-linux-ar AR2=arm-linux-ranlib 5、在TARGETDIR目录下建立 man/man1,include,lib,bin四个目录 6、#make #make install 7、将/TARGETDIR/include/中(jconfig.h, jerror.h, jmorecfg.h, jpeglib.h)四个头文件拷贝到:/usr/local/arm/3.4.1/arm-linux/include中。 将/TARGETDIR/lib中(libjpeg.la, libjpeg.so, libjpeg.so.62, libjpeg.so.62.0.0)中库文件拷贝到:/usr/local/arm/3.4.1/arm-linux/lib中。 注意:执行以下命令检查生成的libjpeg.so是否为ARM版: 下为正确输出,否则检查交叉编译器路径以及Makefile并重新编译。 file libjpeg.so libjpeg.so: ELF 32-bit LSB shared object, ARM, version 1 (ARM), not tripped 注意:执行完以上操作后执行以下命令检查库文件是否已正确安装: arm-linux-gcc -print-file-name=libjpeg.so 如果输出为"libjpeg.so"则说明没有正确安装,重复7步骤。 如果输出为"DIR/libjpeg.so"则说明安装正确。 二、编译采集图像小程序 小程序在:http://blog.chinaunix.net/u3/93660/showart_1860238.html 1、交叉编译: #arm-linux-gcc test.c -o test -I /usr/local/arm/3.4.1/arm-linux/include -L /usr/local/arm/3.4.1/arm-linux/lib 2、将生成的可执行文件和libjpeg等三个库文件拷贝到板子上执行。ok,done!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值