linux系统安装zint
背景:
今天代码拉下了发现启动时报错,一看原来是同事用了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的更多相关文章
- linux系统安装(上)
1.VMware虚拟机的软件应用 www.vmware.com 2.linux系统安装设置(分区为重点) 3.远程登录管理工具介绍centOS5.5 使用虚拟机的优点 1.不用分区 2.可以完成本机与 ...
- 1.Linux系统安装
Linux系统安装系统分区(磁盘分区) 主要管理:文件和目录分类:主分区:最多有4个 扩展分区:1个扩展分区 和主分区最多4个 存放逻辑分区 逻辑分区:存放数据 格式化:高级格式化(逻辑格式化) 写入 ...
- Linux学习心得之 LVM管理与Linux系统安装
作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 LVM管理与Linux系统安装 1.前言 2.LVM 简介与术语 3.LVM 使用 4.Li ...
- Linux系统安装时分区的选择(推荐)
Linux系统安装时分区的选择(推荐) 出处:http://www.cnblogs.com/gylei/archive/2011/12/04/2275987.html 前言: 以前初识Linux时, ...
- LNMP平台搭建---Linux系统安装篇
在互联网网站开发领域,有一个名词,大家一定不陌生,那就是LAMP,经典的Web服务器环境,由Linux+Apache+MySQL+PHP组成,,后来,一个名叫Nginx的Web服务器开源出来了,因其更 ...
- Vmware安装与VMware下Linux系统安装
源文件地址:http://www.cnblogs.com/lclq/p/5619271.html 1.下载安装VMware,我安装的是VMware 12.VMware从11开始不再支持32位系统,32 ...
- linux系统安装(虚拟机以及linux的下载与安装)
最近开始研究linux系统,以前接触linux系统只是一些简单的命令,例如: pwd:查看当前目录 ls:遍历目录 cd :在目录之间切换等. linux系统是基于unix系统开发的,是一个 ...
- Linux达人养成计划1(第2章 Linux系统安装)
2.3 系统分区之分区与格式化 1. 分区类型 主分区:最多只能有四个. 扩展分区: 最多只能有1个. 主分区加扩展分区最多有4个. 不能写入数据,只能包含逻辑分区. 逻辑分区: 2. 格式化(高级格 ...
- 把虚拟机中的Linux系统安装到U盘中
[小技巧] 把虚拟机中的Linux系统安装到U盘中 出于各种需求,很多用户可能经常会在Windows系统中安装虚拟机,然后在虚拟机中安装Linux系统.使用虚拟机的优点是可以同时使用多个系统,而缺点也 ...
随机推荐
- 第十五章·Kibana深入-Dev Tools及Lucene语法
Dev Tools介绍 Dev Tools 页面包含开发工具,您可以使用这些Dev Tools与Kibana中的数据进行交互. 原先的交互式控制台Sense,使用户方便的通过浏览器直接与Elastic ...
- sql注入搞事情(连载二)
sql注入(连载二)安信华web弱点测试系统注入 好多人问我sql怎么学习,我一下也说不出来.我就在此做统一的解答: sql语句分为两种,不管怎么用还是怎么学习主要是要理解SQL语句的基本概念,框架, ...
- Python制作的射击游戏
如果其他朋友也有不错的原创或译文,可以尝试推荐给伯乐在线.] 你有没有想过电脑游戏是怎样制作出来的?其实它没有你想象的那样复杂! 在这个教程里,你要学做一个叫<兔子和獾>的塔防游戏,兔子作 ...
- 配置lnmp时出现“file not found?
问题: 昨天测试并搭建lnmp架构,在测试过程中,挂载好测试环境时在浏览器上测试网站出现“file not found",使用命令curl时也出现”file not found", ...
- Java常用类(二) Scanner类和大数类
二.Scanner类 有C系语言基础的可能都比较熟悉scanf("%d",&a);和cin>>a;这种代码,也打开了程序交互的第一道门.因此,这些程序员开始学J ...
- pycharm pro版server激活
从网上搜集了一些 License server 地址(有钱的一定要支持正版哦) http://idea.iteblog.com/key.php http://intellij.mandroid.cn ...
- 函数参数-undefined-默认值-可选参数
1.函数参数为undefined时,触发参数默认值 2.实参数量 < 形参数量,多余的形参值为 underfined 3.设置可选参数 1)JS中: 检测 undefined :function ...
- 题解 【POJ1952】 BUY LOW, BUY LOWER
题目意思: 给你一个长度为\(n\)(\(1<=n<=5000\))的序列,并求出最长下降子序列的长度及个数, 并且,如果两个序列中元素的权值完全相同,那么即使它们的位置不一样,也只算一种 ...
- Linux系统挂载存储只读改成读写
Copy from:https://blog.csdn.net/u010977122/article/details/53316671 1.mount:用于查看哪个模块输入只读,一般显示为:[root ...
- Python之threading模块的使用
作用:同一个进程空间并发运行多个操作,专业术语简称为:[多线程] 1.任务函数不带参数多线程 #!/usr/bin/env python # -*- coding: utf-8 -*- import ...