背景:

 今天代码拉下了发现启动时报错,一看原来是同事用了zint的gem,我又没安,然后花了点时间解决,但其中踩了几次坑,所以打算记录下:

一、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 格式的图像文件和位图的字节数组。

它的开源项目介绍页面,https://sourceforge.net/projects/zint/ 可自行阅读。

二、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

Mac 

如果您是mac的话只需执行命令即可    brew install zint 

Linux

编译步骤:

1)         下载源码

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

https://sourceforge.net/projects/zint/files/zint/2.4.3/

笔者下载的版本是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

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

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

linux系统安装zint的更多相关文章

  1. linux系统安装(上)

    1.VMware虚拟机的软件应用 www.vmware.com 2.linux系统安装设置(分区为重点) 3.远程登录管理工具介绍centOS5.5 使用虚拟机的优点 1.不用分区 2.可以完成本机与 ...

  2. 1.Linux系统安装

    Linux系统安装系统分区(磁盘分区) 主要管理:文件和目录分类:主分区:最多有4个 扩展分区:1个扩展分区 和主分区最多4个 存放逻辑分区 逻辑分区:存放数据 格式化:高级格式化(逻辑格式化) 写入 ...

  3. Linux学习心得之 LVM管理与Linux系统安装

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 LVM管理与Linux系统安装 1.前言 2.LVM 简介与术语 3.LVM 使用 4.Li ...

  4. Linux系统安装时分区的选择(推荐)

    Linux系统安装时分区的选择(推荐)  出处:http://www.cnblogs.com/gylei/archive/2011/12/04/2275987.html 前言: 以前初识Linux时, ...

  5. LNMP平台搭建---Linux系统安装篇

    在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...

  6. Vmware安装与VMware下Linux系统安装

    源文件地址:http://www.cnblogs.com/lclq/p/5619271.html 1.下载安装VMware,我安装的是VMware 12.VMware从11开始不再支持32位系统,32 ...

  7. linux系统安装(虚拟机以及linux的下载与安装)

    最近开始研究linux系统,以前接触linux系统只是一些简单的命令,例如: pwd:查看当前目录   ls:遍历目录    cd :在目录之间切换等. linux系统是基于unix系统开发的,是一个 ...

  8. Linux达人养成计划1(第2章 Linux系统安装)

    2.3 系统分区之分区与格式化 1. 分区类型 主分区:最多只能有四个. 扩展分区: 最多只能有1个. 主分区加扩展分区最多有4个. 不能写入数据,只能包含逻辑分区. 逻辑分区: 2. 格式化(高级格 ...

  9. 把虚拟机中的Linux系统安装到U盘中

    [小技巧] 把虚拟机中的Linux系统安装到U盘中 出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统.使用虚拟机的优点是可以同时使用多个系统,而缺点也 ...

随机推荐

  1. Scala获取main函数参数,idea演示

    1 代码示范 /** * @author zhangjin * @create 2019-06-09 11:15 */ object TestMarnArgs { def main(args: Arr ...

  2. python网络编程:socket套接字

    一.socket 二.TCP服务器 三.TCP客户端 四.UDP服务器 五.UDP客户端 六.聊天的客户端 七.聊天的服务器 一.socket """ 学习网络编程 其实 ...

  3. 使用Gallery制作图片浏览器

    MainActivity.class public class MainActivity extends AppCompatActivity implements AdapterView.OnItem ...

  4. 基于partition的递归

    partition算法可以应用在快速排序算法中,也可以应用到 Selection algorithm(在无序数组中寻找第K大的值) Partition 实现 快速排序中用到的 partition 算法 ...

  5. PAT Basic 1021 个位数统计 (15 分)

    给定一个 k 位整数 1 (0, ,, d​k−1​​>0),请编写程序统计每种不同的个位数字出现的次数.例如:给定 0,则有 2 个 0,3 个 1,和 1 个 3. 输入格式: 每个输入包含 ...

  6. Java语言基础(12)

    1 构造方法重载 在一个类内部,编写多个构造方法,创建对象的时候,根据需求的不同,调用不同的构造方法创建对象,实现不同的初始化. 案例:Demo1 public class Demo1 { publi ...

  7. php程序的生命周期

    1.PHP的运行模式: PHP两种运行模式是WEB模式.CLI模式.无论哪种模式,PHP工作原理都是一样的,作为一种SAPI运行. 1.当我们在终端敲入php这个命令的时候,它使用的是CLI. 它就像 ...

  8. SQL语句 case ... when

    select 字段A, 字段B, CASE WHEN t.operate = 1 then 'aa'WHEN t.operate = 2 then 'bb'WHEN t.operate = 3 the ...

  9. IOS下图片不能显示问题的解决办法

    最近遇到这样一个问题,在HTML5手机页面中,直接给<img>标签设置宽高,即便图片路径正常,在IOS真机下也是无法显示的,而在安卓以及浏览器的模拟真机上都是正常显示的,这是为什么呢? h ...

  10. Suse环境下编译linux-2.6.24内核

    Suse环境下编译linux-2.6.24内核 1.下载linux-2.6.24内核源码: https://mirrors.edge.kernel.org/pub/linux/kernel/v2.6/ ...