我正在用LuaLaTex给我们写一个小程序。其目的是生成具有给定uuid的qr代码,qr代码打印在页面上,uuid存储在pdf的元数据中。
不过,我认为最好在texmf文件夹中有一个可执行文件,由我的文档中的类文件调用。要生成我使用的(Linux) qrencode & convert与这个lua脚本uuidqrcode.lua的qr代码:
#!/usr/bin/env lua
function gen_qr_uuid ()
local uuid = require 'uuid'
-- uuid.seed(math.randomseed(os.time()))
local encode = uuid()
local name = encode
local format = 'pdf'
local qrencode = string.format(
[[qrencode \
--type=EPS \
--output=%s.eps \
--size=10 \
--level=H \
--margin=0 \
--casesensitive \
%s \
]],
name,
encode)
local convert = string.format(
[[convert \
%s.eps \
%s.%s \
]],
name,
name,
format)
local rmeps = string.format("rm %s.eps", name)
os.execute(qrencode)
os.execute(convert)
os.execute(rmeps)
end
for i=1, (arg[1] or 1) do
gen_qr_uuid ()
end要将此脚本转换为独立的可执行文件,我使用了luastatic和这个脚本makeluaexec:
#!/bin/sh
luastatic $1 `pkg-config --libs --cflags lua`这样我就有了一个可执行文件,但是它依赖于qrencode & convert,所以当我移动到另一台Linux机器时,必须安装这些工具。有办法将这些工具打包到我自己生成的可执行文件中吗?
发布于 2018-10-05 03:11:44
是。qrencode程序只是libqrencode的包装器,convert命令只是ImageMagick的包装器。与其调用这些命令,不如直接从代码中调用库函数。像https://github.com/isage/lua-imagick和https://github.com/vincascm/qrencode这样的绑定将对此非常有用。然后,当您调用luastatic时,只需传入相关的静态库。
https://unix.stackexchange.com/questions/473282
复制相似问题