LV40-01-二维码识别-02-ZBar简介

什么是ZBar?怎么移植?若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.6的64位版本(一开始使用的是16.04版本,后来进行了升级)
VMware® Workstation 17 Pro 17.0.0 build-20800274
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
Linux开发板环境 Linux开发板 正点原子 i.MX6ULL Linux 阿尔法开发板
uboot NXP官方提供的uboot,NXP提供的版本为uboot-imx-rel_imx_4.1.15_2.1.0_ga(使用的uboot版本为U-Boot 2016.03)
linux内核 linux-4.15(NXP官方提供)
点击查看本文参考资料
分类 网址 说明
官方网站 https://www.arm.com/ ARM官方网站,在这里我们可以找到Cotex-Mx以及ARMVx的一些文档
https://www.nxp.com.cn/ NXP官方网站
https://www.nxpic.org.cn/NXP 官方社区
https://u-boot.readthedocs.io/en/latest/u-boot官网
https://www.kernel.org/linux内核官网
点击查看相关文件下载
分类 网址 说明
NXP https://github.com/nxp-imx NXP imx开发资源GitHub组织,里边会有u-boot和linux内核的仓库
https://elixir.bootlin.com/linux/latest/source 在线阅读linux kernel源码
nxp-imx/linux-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga NXP linux内核仓库tags中的rel_imx_4.1.15_2.1.0_ga
nxp-imx/uboot-imx/releases/tag/rel_imx_4.1.15_2.1.0_ga NXP u-boot仓库tags中的rel_imx_4.1.15_2.1.0_ga
I.MX6ULL i.MX 6ULL Applications Processors for Industrial Products I.MX6ULL 芯片手册(datasheet,可以在线查看)
i.MX 6ULL Applications ProcessorReference Manual I.MX6ULL 参考手册(下载后才能查看,需要登录NXP官网)

一、ZBar 简介

1. 简介

ZBar条形码阅读器是一个开源软件,适用于读取不同来源的条形码,如视频流、图像文件和原始强度传感器。它支持EAN-13/UPC-A, UPC-E, EAN-8, Code 128,Code 39, Codabar, Interleaved 2/5和二维码。包括在库是解码捕获的条形码图像和图像的基本应用程序,使用视频设备(如网络摄像头)作为条形码扫描仪。对于开发者,支持语言绑定包括C、C++、Python和Perl,以及用于Qt、GTK和PyGTK的GUI小部件。

2. 相关资料

官网在这里:ZBar bar code reader

GitHub仓库:ZBar/ZBarmchehab/zbar

3. 下载源码

这里有两个版本:ZBar/ZBar 仓库的 Release 0.10 · ZBar/ZBar(新的版本没有configure文件了,要自己生成,我试了一下,没那么容易,很多问题要解决,也可能是我太菜了)、mchehab/zbar 仓库的版本,它有个ftp网址 Index of /downloads/zbar 可以下栽,这里我选当前最新的:zbar-0.23.tar.gz;

image-20250114192212045

解压后可以得到如下文件:

image-20250114192348457

说明:

(1)并不是所有的版本下载下来之后都直接有configure文件,有些版本是没有的,需要自己生成,但是自己生成又总是有一堆的问题,不如选直接带有configure的版本。

(2)关于0.10版本,在网上可能会在这几个地方找到0.10版本的源码:

1
2
3
linuxtv:https://linuxtv.org/downloads/zbar/zbar-0.10.tar.bz2
sourceforge:https://sourceforge.net/projects/zbar/files/zbar/0.10/zbar-0.10.tar.bz2/download
GitHub:https://github.com/ZBar/ZBar/releases/tag/0.10

只有 sourceforge 中下载的带有configure文件,其他两个都没有,我自己折腾生成configure文件的时候不是这里报错就是那里报错的,就感觉很麻烦,不如选择带有 configure 文件的,如果一定要用0.10版本的话,可以用以下命令下载:

1
wget https://jaist.dl.sourceforge.net/project/zbar/zbar/0.10/zbar-0.10.tar.bz2

二、ZBar移植

1. 编译源码

  • 创建安装目录
1
mkdir -p /home/sumu/9arm-linux-lib/zbar-0.23/zbar_out
  • 配置编译选项
1
./configure --host=arm-linux-gnueabihf --prefix=/home/sumu/9arm-linux-lib/zbar-0.23/zbar_out --enable-static --without-python --without-imagemagick --without-jpeg --without-gtk --without-qt --disable-video --without-dbus
  • 编译
1
make
image-20250114193216906
  • 安装
1
make install
image-20250114193234190

安装完毕后,我们会得到下面的文件:

image-20250114193315087

会发现也有两个软链接,拷贝的时候需要注意一下。我们可以使用以下命令看一下生成的库的格式是否是对的:

1
file libzbar.so.0.3.0
image-20250114200732802

2. 拷贝到共享目录

拷贝到共享目录的目的是编译的时候用。

1
2
3
4
cp -avf ~/9arm-linux-lib/zbar-0.23/zbar_out ~/1sharedfiles/linux_develop/imx6ull-app-demo/lib/zbar-0.23
cd ~/1sharedfiles/linux_develop/imx6ull-app-demo/lib/zbar-0.23/lib
cp libzbar.so.0.3.0 libzbar.so
cp libzbar.so.0.3.0 libzbar.so.0

3. 移植到开发板

这里我们直接从ubuntu挂载的根文件系统,所以直接拷贝即可。

1
2
# 这个命令在ubuntu中执行
cp -avf ~/9arm-linux-lib/zbar-0.23/zbar_out/lib/* /home/sumu/4nfs/imx6ull_rootfs/lib

拷贝完毕后检查一下软链接:

1
2
# 这个命令在串口终端执行
ls -alh /usr/lib/libzbar*
image-20250114194031032