Ghostscript 中 ps2pdf 命令在 windows msys 下的运行错误问题。
前两天看到了 miloyip/game-programmer 这个项目觉得特别有用,真是好东西,明确了指出了学习路线,尤其是新手。不过打开看,有些书对应的亚马逊链接是无效的,比如《Tricks of the 3D Game Programming Gurus》等书的链接都是:https://www.amazon.com/dp// 这种无效链接,于是我就 fork 了一份把这些链接都补上了,提交了一个 pull request,就看作者什么时候能通过 merge 了,修改好我就尝试编译测试,由于是直接通过 make 生成,我 windows 本机已经安装了 msys,于是我就安装了 windows 版本的:Graphviz 2.38, Ghostscript 9.16 (ps2pdf), cpdf, 安装完后把可执行文件的目录添加到 PATH 系统环境变量,Ghostscript 需要把安装目录下的 bin, lib,都添加进去;ok 以后运行发现到最后总是 提示 ps2pdfwr: gs not found;翻阅了下本地 manual Ps2pdf.htm,其中写道:
All of these scripts actually call a script named ps2pdfwr or ps2pdfxx . The Unix ps2pdfwr script assumes that the Ghostscript executable is named gs ; it is unlikely that you will need to change this. The DOS and MS Windows ps2pdfxx.bat script uses the value of the GSC environment variable, if defined, as the name of the executable; otherwise the script assumes the executable is named gswin32c . So in these environments, if the executable has a different name, you must set GSC to the name of the executable. |
即是说 ps2pdf 最终就是调用 ps2pdfwr 或者 ps2pdfxx,这两个脚本在 unix 下使用可执行文件:gs,不需要任何修改,但在 dos 和 windows 下 ps2pdfxx.bat 先使用 GSC 环境变量的值,如果未定义此环境变量则默认使用的可执行文件为 gswin32c,所以如果你安装的是64位话,可执行文件是 gswin64c.exe,所以需要添加名称 GSC 的环境变量,值为 gswin32c。
但是按照上述步骤操作后,依然提示同样错误,打开 ps2pdfxx 后,脚本为:
GS_EXECUTABLE=gs
gs="`dirname \"$0\"`/$GS_EXECUTABLE"
if test ! -x "$gs"; then
gs="$GS_EXECUTABLE"
fi
GS_EXECUTABLE="$gs" ... 省略 ... exec "$GS_EXECUTABLE" $OPTIONS -q -P- -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr "-sOutputFile=$outfile" $OPTIONS -c .setpdfwrite -f "$infile"
这里没有使用 GSC 环境变量,而是直接使用了 gs 作为可执行文件名称,外部修改 GS_EXECUTABLE 的值,或者设置成环境变量也没用,因为一开始就被修改成 "gs" 了,不过这个问题直接使用 cmd 命令行是没有问题的,只在 msys 命令行下有这个错误,于是我就直接加了个名为 gs 的 shell 脚本放到 lib 下,内容为:
gs="`dirname \"$0\"`/$GSC"
if test ! -x "$gs"; then
gs="$GSC"
fi
exec "$gs" "$@"
重新在 msys 命令行中 make 或者直接使用 ps2pdf 命令来测试,之前的 "gs not found" 的错误不见了,文档的整个编译生成过程顺利通过。
Ghostscript 中 ps2pdf 命令在 windows msys 下的运行错误问题。的更多相关文章
- 解决Windows 10下Wireshark运行问题
解决Windows 10下Wireshark运行问题在Windows 10下,安装Wireshark时候,提示WinPcap不被系统系统支持.这是由于最新版的WinPcap 4.1.3只支持到Wind ...
- windows 环境下通过运行快速启动程序
在windows环境下,我们可以使用一些系统内置的快捷键来快速启动我们想要的应用程序,我这里举例几个我经常使用的,比如: 快捷键 功能说明 services.msc 查看系统服务 gpedit.ms ...
- 解决Ubuntu中vi命令的编辑模式下不能正常使用方向键和退格键的问题
在Ubuntu中,进入vi命令的编辑模式,发现按方向键不能移动光标,而是会输出ABCD,以及退格键也不能正常删除字符.这是由于Ubuntu预装的是vim-tiny,而我们需要使用vim-full,解决 ...
- Windows系统下安装运行Kafka
一.安装JAVA JDK 1.下载安装包 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151. ...
- wampserver - windows服务器下php运行环境配置
之前一直在通过windows server IIS跑php程序,直到后来,发现了她 “wampserver", 一个法国的windows+apache+php+mysql部署包. 感觉挺好用 ...
- 为cmd中的命令添加别名,以解决java:错误: 编码 GBK 的不可映射字符 (0xAF)
使用sublineText3编写了java代码,通过cmd javac编译 提示 错误:编码GBK的不可映射字符 解决方法 使用javac -encoding UTF-8 Person.java 结果 ...
- windows 环境下切换 python2 与 pythone3 以及常用命令
windows 环境下切换运行时的 python2 与 pythone3 当需要 python2 时执行:py -2 当需要 python3 时执行:py -3 windows下通过cmd切换pyth ...
- 代理server的理解(1):Windows环境下的代理server设置
浏览器中的代理server设置 Windows系统接口提供的代理server设置是一个全局的代理server的设置,如图所看到的,这里就不多解释: 各个浏览器在使用代理设置的时候,能够主动地获代替理设 ...
- Windows环境下制作MACOS X U盘安装盘
前两天在朋友的MAC BOOK AIR上胡乱操作时把原来安装好的双系统搞坏了,一不小心又把硬盘格式化了,导致MAC系统也没了,于是只能重新安装MACOS系统,并根据网友提供的教程,在MACOS安装OK ...
随机推荐
- Linux系统查看系统信息
1. CPU # lscpu # cat /proc/cpuinfo //可以知道每个cpu信息,如每个CPU的型号,主频等 2. 内存 # free -m # cat /proc/meminfo / ...
- C11内存管理之道:智能指针
1.shared_ptr共享智能指针 std::shared_ptr使用引用计数,每个shared_ptr的拷贝都指向相同的内存,在最后一个shared_ptr析构的时候,内存才会释放. 1.1 基本 ...
- ClassCastException: org.apache.tomcat.websocket.server.WsServerContainer cannot be cast to javax.websocket.server.ServerContainer
21:09:22.221 [MessageBroker-3] INFO c.t.s.s.impl.StockNewsServiceImpl - [2017-12-16 21:09:22] execut ...
- JS之window对象
window对象 window属性: opener:打开当前窗口的源窗口,如果这个窗口是由别的网页点击链接跳转过来的,或者是从另外一个页面点击打开窗口打开的,opener就是找到源页面的.如果当前窗口 ...
- UIImageView属性---iOS-Apple苹果官方文档翻译
本系列所有开发文档翻译链接地址:iOS7开发-Apple苹果iPhone开发Xcode官方文档翻译PDF下载地址 //转载请注明出处--本文永久链接:http://www.cnblogs.com/C ...
- python学习笔记(二)之python简单实践
1 安装python开发环境 Linux环境下自动安装好了python,可以通过以下命令更新到python最新版本. #echo "alias python=/usr/bin/python3 ...
- Go从入门到精通(持续更新)
1.0 搭建环境 由于我们 Go官方网站 在我大天朝被和谐了,所以我们只能去 Go语言中文网 来下载了.Go的安装很简单,不像Java还要配置一大堆的东西,选择自己系统的对应版本,下载安装,像安装QQ ...
- Arduino 舵机sg90电位器实现转动方向控制
/* Sweep*/ #include <Servo.h> int potpin = 0;//电位器接到A0 int val; //存储电位器读取的数值 Servo myservo//定义 ...
- 探索ReactNative应用
本篇文章是我看AC2016腾讯前端技术交流大会后写的.写的不好,大家见谅啊. 一,什么是ReactNative? 简单来说就是可以用javascript来写APP了,而且性能还不错. 用JS写的话已经 ...
- HTTP响应码摘自apach官网
HTTP状态列表 响应码由三位十进制数字组成,它们出现在由HTTP服务器发送的响应的第一行. 响应码分五种类型,由它们的第一位数字表示: 1xx:信息,请求收到,继续处理 2xx:成功,行为被成功地接 ...