0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【嵌入式编程】如何在Linux平台安装zint开源库

嵌入式物联网开发 来源:嵌入式物联网开发 作者:嵌入式物联网开发 2022-08-23 19:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

​ 一、zint开源库的介绍

zint 是一个开源的条码编码库,它支持超过50种条码,包括 Code-128, Data Matrix, EAN-128, UPC/EAN, ITF, QR Code, Code 16k, PDF417, MicroPDF417, LOGMARS, Maxicode, GS1 DataBar, Aztec, Composite Symbols 等等,基本上你见过的条码都能用它来进行编码,它支持直接输出 PNG 格式的图像文件和位图的字节数组。

它的开源项目介绍页面,Zint Barcode Generator download | SourceForge.net 可自行阅读。

二、zint源码在linux平台下的编译和安装

编译平台介绍:

系统版本 :Red Hat Enterprise Linux6

Linux内核版本:Linux localhost.localdomain 2.6.32-71.el6.i686 #1 SMP Wed Sep 1 01:26:34 EDT 2010 i686 i686 i386 GNU/Linux

gcc版本 :4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)

zint版本:zint-2.4.3

编译步骤:

1) 下载源码

在开源页面中下载到对应版本的zint源码;

Zint Barcode Generator - Browse /zint/2.4.3 at SourceForge.net

笔者下载的版本是zint-2.4.3,对应的压缩包文件为 zint-2.4.3.tar.gz

将下载的源码放于一个新的linux的目录下,比如/zint_src

2) 解压源码

cd /zint_src

tar –xvf zint-2.4.3.tar.gz 解压到当前目录

解压完了之后,用ls看一下当前路径,如果有zint-2.4.3文件夹生成,且里面有文件,解压过程没有报错,则表示解压成功了。

3) 阅读编译指南

cd zint-2.4.3

vi readme-cmake

里面的内容如下:

how to :

mkdir build

cd build

cmake ..

make [-j nr_proc+1]

make install

4) 开始正式编译

mkdir build

cd build

cmake ..

执行后这句后,成功的话就会提示 Build files have been written to: /zint_src/zint-2.4.3/build

这个时候ls一下当前目录就会发现有makefile了,我们就可以使用make直接来安装了

make install

输入完后,会看到百分比提示了:

【笔者第一次make install报错了,是因为windows主机和linux虚拟机之间使用了共享文件,刚好做so文件软链接的时候就报错了,如下:】

[root@localhost build]# make install

Scanning dependencies of target zint

[ 1%] Building C object backend/CMakeFiles/zint.dir/common.c.o

[ 3%] Building C object backend/CMakeFiles/zint.dir/library.c.o

[ 5%] Building C object backend/CMakeFiles/zint.dir/render.c.o

.....[中间省略]

[ 55%] Building C object backend/CMakeFiles/zint.dir/code1.c.o

[ 57%] Building C object backend/CMakeFiles/zint.dir/gridmtx.c.o

Linking C shared library libzint.so

CMake Error: cmake_symlink_library: System Error: Operation not supported

CMake Error: cmake_symlink_library: System Error: Operation not supported

make[2]: *** [backend/libzint.so.2.4.1] 错误 1

make[1]: *** [backend/CMakeFiles/zint.dir/all] 错误 2

make: *** [all] 错误 2

[root@localhost build]#

如果按照一开始将源码放于/zint_src (非主机与虚拟机的共享目录),则可以很顺利的编译和安装,如下:

root@localhost build]# make install

Scanning dependencies of target zint

[ 1%] Building C object backend/CMakeFiles/zint.dir/common.c.o

[ 3%] Building C object backend/CMakeFiles/zint.dir/library.c.o

[ 5%] Building C object backend/CMakeFiles/zint.dir/render.c.o

[ 7%] Building C object backend/CMakeFiles/zint.dir/ps.c.o

[ 9%] Building C object backend/CMakeFiles/zint.dir/large.c.o

[ 11%] Building C object backend/CMakeFiles/zint.dir/reedsol.c.o

.....[中间省略]

[ 53%] Building C object backend/CMakeFiles/zint.dir/code49.c.o

[ 55%] Building C object backend/CMakeFiles/zint.dir/code1.c.o

[ 57%] Building C object backend/CMakeFiles/zint.dir/gridmtx.c.o

Linking C shared library libzint.so

[ 57%] Built target zint

Scanning dependencies of target zint_frontend

[ 59%] Building C object frontend/CMakeFiles/zint_frontend.dir/main.c.o

Linking C executable zint

[ 59%] Built target zint_frontend

Scanning dependencies of target QZint

[ 61%] Building CXX object backend_qt4/CMakeFiles/QZint.dir/qzint.cpp.o

Linking CXX shared library libQZint.so

[ 61%] Built target QZint

[ 63%] Generating qrc_resources.cxx

[ 65%] Generating moc_mainwindow.cxx

[ 67%] Generating moc_datawindow.cxx

[ 69%] Generating moc_sequencewindow.cxx

[ 71%] Generating moc_exportwindow.cxx

[ 73%] Generating ui_mainWindow.h

[ 75%] Generating ui_extData.h

[ 76%] Generating ui_extSequence.h

[ 78%] Generating ui_extExport.h

Scanning dependencies of target zint-qt

[ 80%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/barcodeitem.cpp.o

[ 82%] Building CXX object frontend_qt4/CMakeFiles/zint-qt.dir/main.cpp.o

[ 84%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/mainwindow.cpp.o

[ 86%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/datawindow.cpp.o

[ 88%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/sequencewindow.cpp.o

[ 90%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/exportwindow.cpp.o

[ 92%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/moc_mainwindow.cxx.o

[ 94%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/moc_datawindow.cxx.o

[ 96%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/moc_sequencewindow.cxx.o

[ 98%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/moc_exportwindow.cxx.o

[100%] Building CXX object

frontend_qt4/CMakeFiles/zint-qt.dir/qrc_resources.cxx.o

Linking CXX executable zint-qt

[100%] Built target zint-qt

Install the project...

-- Install configuration: "RelWithDebInfo"

-- Installing: /usr/share/cmake/Modules/FindZint.cmake

-- Installing: /usr/local/lib/libzint.so.2.4.1

-- Installing: /usr/local/lib/libzint.so.2.4

-- Installing: /usr/local/lib/libzint.so

-- Installing: /usr/local/include/zint.h

-- Installing: /usr/local/bin/zint

-- Installing: /usr/local/lib/libQZint.so.2.4.1

-- Installing: /usr/local/lib/libQZint.so.2.4

-- Installing: /usr/local/lib/libQZint.so

-- Installing: /usr/local/include/qzint.h

-- Installing: /usr/local/bin/zint-qt

到这里zint库就已经安装好了。

5) 测试zint和libzint

通过第4步后已经完成了安装,这个步骤我们来试一下zint和libzint如下:

先看下libzint是否安装成功,

[root@localhost build]# ls -al /usr/local/lib/libzint.so

lrwxrwxrwx. 1 root root 14 10月 16 17:20 /usr/local/lib/libzint.so ->

libzint.so.2.4

则正是zint动态库已经链接完成。

测试zint 如下:

在终端输入 zint –h

[liluchang@localhost src]$ zint -h

Zint version 2.4.1

Encode input data in a barcode and save as a PNG, EPS or SVG file.

-h, --help Display this message.

-t, --types Display table of barcode types

-i, --input=FILE Read data from FILE.

-o, --output=FILE Write image to FILE. (default is out.png)

-d, --data=DATA Barcode content.

-b, --barcode=NUMBER Number of barcode type (default is 20 (=Code128)).

--height=NUMBER Height of symbol in multiples of x-dimension.

-w, --whitesp=NUMBER Width of whitespace in multiples of x-dimension.

--border=NUMBER Width of border in multiples of x-dimension.

--box Add a box.

--bind Add boundary bars.

-r, --reverse Reverse colours (white on black).

--fg=COLOUR Specify a foreground colour.

--bg=COLOUR Specify a background colour.

--scale=NUMBER Adjust size of output image.

--directpng Send PNG output to stdout

--directeps Send EPS output to stdout

--directsvg Send SVG output to stdout

--dump Dump binary data to stdout

--rotate=NUMBER Rotate symbol (PNG output only).

--cols=NUMBER (PDF417) Number of columns.

--vers=NUMBER (QR Code) Version

--secure=NUMBER (PDF417 and QR Code) Error correction level.

--primary=STRING (Maxicode and Composite) Structured primary message.

--mode=NUMBER (Maxicode and Composite) Set encoding mode.

--gs1 Treat input as GS1 data

--binary Treat input as Binary data

--notext Remove human readable text

--square Force Data Matrix symbols to be square

--init Create reader initialisation symbol (Code 128)

--smalltext Use half-size text in PNG images

--batch Treat each line of input as a separate data set

error: No data received, no symbol generated

[liluchang@localhost src]$

能看到版本信息,证明zint这个bin文件已经安装好了。

至此zint和libzint的安装已全部结束,笔者在安装的过程中,几乎使用的默认路径,感兴趣的童鞋可以试着修改一些自定义的安装路径,可以定制化自己的zint和libzint。

本章介绍到此结束,下一篇将介绍如何使用libzint生成二维码,敬请关注。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    5210

    文章

    20683

    浏览量

    337477
  • Linux
    +关注

    关注

    88

    文章

    11825

    浏览量

    219618
  • 编程
    +关注

    关注

    90

    文章

    3724

    浏览量

    97459
  • zint
    +关注

    关注

    0

    文章

    1

    浏览量

    1124
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    如何成为一名高薪嵌入式工程师?

    精通指针、内存管理、结构体、位操作等,理解底层硬件交互原理。 C++(可选):面向对象编程嵌入式Linux或复杂系统中应用广泛,如驱动开发、中间件设计。 汇编语言:理解处理器架构(如ARM
    发表于 04-09 09:03

    Linux 下开发嵌入式必备命令速查表

    嵌入式开发中,Linux系统几乎成为必备的开发环境。不管你是在做STM32、RaspberryPi、还是基于ARM的板子,熟练掌握Linux命令不仅能加快开发效率,还能让你在调试、交叉编译、文件
    的头像 发表于 01-19 09:06 1058次阅读
    <b class='flag-5'>Linux</b> 下开发<b class='flag-5'>嵌入式</b>必备命令速查表

    何在Zynq UltraScale+ MPSoC平台上通过JTAG启动嵌入式Linux镜像

    在之前文章中,我们介绍了如何使用 XSCT 工具通过 JTAG 在 Zynq SoC 上启动嵌入式 Linux 镜像(从 JTAG 启动 Zynq-7000 嵌入式 Linux:使用
    的头像 发表于 01-13 11:45 5112次阅读

    什么是嵌入式应用开发?

    包括ARM7、ARM9、ARM11、PowerPC、MIPS等。这些处理器和编程语言的选择取决于具体的硬件条件和开发需求‌。 综上所述,嵌入式应用开发是一个综合性的技术领域,涉及硬件和软件的紧密结合,广泛应用于各种设备和系统中,具有广泛的应用前景和发展空间。
    发表于 01-12 16:13

    arm嵌入式主板优缺点

    了Windows CE系统或者Linux系统,因此对于很多客户来说,原先采用了X86的平台,目前要调整到ARM上来,必须对软件平台进行重新编译和调整,而且还要熟悉一下ARM的嵌入式
    发表于 01-08 07:08

    从小白到大牛:Linux嵌入式系统开发的完整指南

    Linux 混合编程)。例如,在嵌入式设备上部署图像识别模型,需掌握交叉编译 AI 框架、优化模型体积与运行速度。​ 工程化能力提升:实际项目中需关注代码规范、版本控制(Git)、自动化构建(CMake
    发表于 12-16 10:42

    嵌入式应掌握的几种能力

    1. 编程语言 基本掌握嵌入式必备的编程语言。C语言为主,C++为辅。在资源有限的情况下,大多数嵌入式产品还是使用C语言为主的,特别是底层驱动开发。上层应用开发大多用C,在一些资源比
    发表于 12-08 06:05

    一个面向单片机、事件驱动的嵌入式开发平台介绍

    EventOS,是一个面向单片机、事件驱动的嵌入式开发平台。它主要有两大技术特色:一是事件驱动,二是超轻量。EventOS以及其母项目EventOS,目标是开发一个企业级的嵌入式开发平台
    发表于 12-05 06:26

    开源 | 60余套STM32单片机、嵌入式Linux、物联网、人工智能项目(开发板+教程+源码)

    私信免费领取!60余套综合项目案例STM32单片机、嵌入式、物联网、人工智能智能车/机器狗/小智AI/家居/农业/安防等多领域项目文档+项目源码,全开源高校教学、学生毕设、创新竞赛、项目练手01
    的头像 发表于 12-04 11:42 987次阅读
    <b class='flag-5'>开源</b> | 60余套STM32单片机、<b class='flag-5'>嵌入式</b><b class='flag-5'>Linux</b>、物联网、人工智能项目(开发板+教程+源码)

    分享一个嵌入式开发学习路线

    如果你想要学习嵌入式开发,我建议按照这个学习路线准备: 1. 基础铺垫期(1-2个月) 理解嵌入式系统的“硬件基础”和“编程入门”,能看懂简单电路,写出基础C语言代码。这一阶段的学习对学历没有
    发表于 12-04 11:01

    嵌入式需要掌握哪些核心技能?

    嵌入式需要掌握哪些核心技能? 若想通过学习嵌入式技术提升就业竞争力,需重点掌握C语言、嵌入式硬件架构、RTOS/Linux开发、通信协议四大核心技能,并结合行业需求积累项目经验。
    发表于 10-21 16:25

    嵌入式工程师为什么要学QT?

    、车载系统和消费电子等领域尤为突出。其跨平台特性、丰富的和工具、高性能以及强大的GUI支持,让Qt成为嵌入式开发最理想的选择。 嵌入式工程师学习Qt有很多好处。 跨
    发表于 08-14 15:15

    怎么结合嵌入式Linux,和FPGA三个方向达到一个均衡发展?

    嵌入式领域,不少人都怀揣着让嵌入式Linux 和 FPGA 三个方向实现均衡发展的梦想,然而实践中却面临诸多挑战。就像备受瞩目的全栈工程师稚晖君,他从大学玩单片机起步,凭借将智能算法融入
    的头像 发表于 06-25 10:08 1056次阅读
    怎么结合<b class='flag-5'>嵌入式</b>,<b class='flag-5'>Linux</b>,和FPGA三个方向达到一个均衡发展?

    Linux嵌入式和单片机嵌入式的区别?

    : 单片机嵌入式 :开发环境相对简单,通常使用C语言或汇编语言进行编程,开发工具包括Keil、IAR等。 Linux嵌入式 :开发环境较为复杂,除了需要掌握C语言,还需要了解
    发表于 06-20 09:46

    嵌入式开发入门指南:从零开始学习嵌入式

    特定功能的计算机系统,广泛应用于智能家居、工业控制、医疗设备、车载系统等领域。 2. 学习嵌入式开发的前置知识熟悉C语言编程掌握基本的数据结构与算法了解数字电路与微控制器原理熟悉Linux操作系统
    发表于 05-15 09:29