2009年8月23日星期日

GNUWin32

这是一个致力于把 Linux 下面一些常用的程序及其库 port 到 Win32 环境下面的项目,原来在 sourceforge 上只能每个程序分别下载,想过把瘾很难,一般只下载最需要的程序,比如 wget,现在有了一个自动下载的程序那是爽快多了,其实主要的方法还是 wget。

这个项目也应验了一个使用 C/C++ 编写程序面临的最大问题,那就是 dll hell,在 Windows 里面这个问题显得格外的突出,因为到现在为止,尚未找到有类似 Linux 下面的 deb 或者 rpm 的包管理系统。因此即便对现在的项目,我们下载了那些程序也不能保证其依赖关系没有冲突。下面我们选择这些项目里面比较有意思的学习一下,其实从另外一个侧面了解 Linux 下面那些优秀的命令行工具如何 work 的。

这个项目的绝大部分程序应该是使用 mingw32 这种原生的 C/C++ 编译器获得的,比起在虚拟机上运行的程序,性能自然是不必多说了。为了更好地了解这些程序,下面我们将它们进行分类。

格式转换
  • a2ps 将文本等格式转换成 ps,或者将 ps 输出到打印机。似乎不很好玩...
  • ascii_chart 将数据转换成为柱状图,支持多种图片格式。太简单了,也许生成 CGI 图片还可以...
  • barcode 将字符串用条形码编码,输出是一个 ps 文件,这个挺不错的,支持多种编码方式,记得原来上机用的那个卡就是用很简单的条形码做的,这个要用了就能做出别人的条形码了 orz
  • bm2font 估计是很古老的将图片转换成为 TeX font 的程序了...
  • bmp2png 言简意赅...
  • deroff 将 roff 文件格式中的一些关键字去掉
  • dvidj 打印 dvi 文件
  • enscript 文本转换为 ps
  • fax2png 这也很明显了... 其实是 tiff 和 png 的转换
  • gd 不知道是做啥的 -,-bbb
  • grap 将某种格式的 graph 描述转换成 LaTeX 的 pic 格式。
  • gri 做图程序,也是写个程序画图...
  • hp2xx 是把 hpgl 转换成矢量图形的程序。
  • imgtops2 将图片转换成为 ps 文件。
  • imgvtopgm 将 pilot image viewer 格式和 pgm 互相转换,提供相关文件信息。
  • jbigkit 提供 jbg 到 pbm 的转换。
  • jpeg2ps 提供 jpg 到 ps 的转换。
  • nenscript 将 ASCII 转换成为 ps。
  • netpbm 处理 pbm 格式的工具。
  • pbmadd 还是 pbm 的工具。
  • pdflib-lite 提供的是图片转换到 pdf 的功能以及多个 pdf 合并。
  • piechart 画饼图。
  • plotutils 一些作图的基本工具,如样条、字符等。
  • pngutils 一些跟 png 相关的小工具。
  • polyglotman 将 man 转换成其它格式。
  • psmark 在 ps 文件边上竖写一行字。
  • psutils 提供一些 ps 处理的常用命令。
  • scribe2latex,将 scribe 格式转换成 latex 代码。
  • sgitools 提供了一堆图形转换的工具。
  • t1lib、t1utils 提供处理 type 1 字体的程序。
  • ttf2pt1 提供将 ttf 字体转换成 type 1 的功能。
  • unrtf 将 RTF 格式转换成为其他格式。
  • urt 提供 ULE 文件格式的转换、操纵能力。
  • wv 提供将 doc 文件转换成为其他类型(如 PDF )的能力。
  • xpdf 提供了处理 PDF 文件的一般功能,但是可惜没有 Linux 下面的那个浏览器。
  • xpm2wico 将 xpm 转换成为 ico 文件。

压缩与解压缩
arc, arj, bsdtar, gzip, lha, mscompress, shareutil(编码二进制文件以便通过 email 发送), tar(打包), unrar(解压 rar), unzip(解压 .zip 文件), zimg, zip
compface 似乎针对某种图像的,没玩过...

获取信息
  • attr 获得 NTFS 文件系统的信息,似乎没啥用 -,-bb
  • bc 原来在这里也介绍过,是个简易计算器,嗯,不喜欢用鼠标点 Windows 的 calc 的同志可以考虑。
  • calc 语法和 C 接近的计算器,似乎比 bc 友善和强大。
  • cpuid 获得 cpu 信息,看起来比一般的测试 cpu 信息的程序都小很多...
  • dmidecode 用来解码 bios 信息的工具。
  • freetype 处理字体的工具,不过似乎在 Windows 下面不好用?
  • gcal 获得日历。
  • hodie 打印 latin 格式的日期。
  • id-utils 建立文件的 id 数据库?不知道具体怎么用...
  • jwhois 是一个 whois 的 client。
  • texinfo 是建立 info 帮助系统和浏览的工具。
  • units 提供单位转换功能。
  • x86info 提供 x86 系统信息,如 CPU 等。


编程
  • autoconf, automake 似乎就是 shell 脚本
  • awka,把 awk 程序翻译成 C 程序,这个比较好玩,简单的正则表达式可以容易的写成 C 程序了
  • bison 是兼容 yacc 的 parser,搞编译器的人应该都知道
  • btyacc 另外一种 yacc
  • cpp 和 cppi 都是 C 的预处理程序相关。
  • cproto 产生 C 的函数原型,估计可以用来自动生成 .h?
  • diffutils 一个是 diff 一个是 patch。最常用的看修改过什么的工具了...
  • fdlibm 是一个 C 的数学库。
  • flex 是个词法分析器。
  • gdbm 是 GNU 的数据库管理
  • gettext 就是著名的多语言支持的库以及支撑程序了。
  • giflib/libungif 是一个用来处理 GIF 图片格式的 C 语言库,包括一些 GIF 的小工具,比如裁剪、提供相关信息,转换文件格式等等。
  • gperf,嗯,提供程序执行的性能的程序,优化程序的时候使用。
  • groff 写 man page 的东西。
  • gsl 就是 GNU 科学计算库。
  • hello 似乎是写程序的示例程序,虽然说很简单,但是可以被初学者用来学者维护代码之类的使用。
  • help2man,帮助建立一个简单的 man page,从程序的 --help 输出。
  • hex2bin 和 hextools 提供将二进制文件转换到 hex 格式,然后逆向转换功能,这个跟 ultraedit 的二进制文件编辑功能类似,只是用两步进行的。
  • indent 将 C 程序代码进行缩进。
  • jpeg 是 libjpeg 一个 C 的 jpeg 库。
  • libart 是一个矢量作图的库,似乎是 GNOME 里面的一个项目
  • libconfig 提供一个统一的存储配置的方案。
  • libgw32c... 不知道干啥的。
  • libiconv、libintl 是 gettext 的一部分。
  • libopennet 处理 URL 的库。
  • libpaper 打印使用的纸张配置。
  • libpng 处理 png 文件的库。
  • libtool 提供 libtool 工具。
  • libutf 提供 C 语言的 utf8 支持。
  • libwmf 提供对 wmf 格式的支持。
  • libxmi 提供渲染 2D 对象的 C/C++ 接口。
  • libxml2 是一个 xml 的 parser。
  • libxslt 是一个 xslt 的库,用于对 xml 进行转换。
  • m4 是宏语言 m4。
  • make 提供了 GNU make。
  • openssl 提供了 openssl 命令及其相关的库。
  • patch 提供了给程序打补丁的功能。
  • pdcurses 是一个 terminal 的库。
  • popt 提供解析命令行参数的 C 库。
  • re2c 将 RE 转换成 C 代码。
  • readline 这是一个标准的用来和用户交互的库,有历史记录等功能。
  • regex、rx、rxspencer 就是正则表达式。
  • sunrpc 产生实现 RPC 的 C 代码的程序。
  • termcap 是编写 terminal 程序的库。
  • tiff 处理 tiff 格式的库和相关工具。
  • troff 和 groff 类似。
  • xpm 提供 xpm 处理的 C 库。
  • zlib 压缩用的库。

shell 相关
  • chsuf 用于批量修改文件后缀
  • coreutils 这里也介绍了,最实用的系列程序
  • cpio 传统程序,没用过 -,-b
  • crypt 用于产生那个 shadow 里面的 hash 结果。
  • cygutils 包括几个 cygwin 里面的小工具,如 dos 和 unix 格式转换,打印 ascii 字符表等。
  • diction 似乎是做某些输入规则的检查。
  • doschk 检查文件名的 dos 兼容性
  • ed 和 edll 两个文件编辑器,功能... 如果你喜欢 Unix 的话...
  • file 检测文件类型。
  • filetype 似乎还不如 file。
  • findutils 提供 locate、find 和 xargs。
  • gawk 提供 awk。
  • gengetopt 为 C 程序生成一个命令行参数的 parser,使用的 GNU libc 的那个 getopt 系列的实现的。
  • grep 这个就不用说了,著名程序之一。
  • gsar,和 grep 类似,但是是将所有文件当作二进制来处理的,允许进行替换。
  • less 是一个 pager。
  • libarchives 提供 bsd 的 tar 和 cpio 命令。
  • mawk、nawk 提供了 awk 的一个变体。
  • minised 提供了一个 sed 的简化版。
  • mktemp 创建临时文件夹。
  • ntfsprog 一些 NTFS 的工具。
  • pcregrep 提供了一个和 perl 的 RE 一样的 grep。
  • rpl 使用 RE 进行多文件的替换。
  • sed 就是那个著名的流编辑器、
  • sgrep 还是 grep。
  • src-highlite 代码高亮,与 page 一起用。
  • tre 是一个类似 grep 的东西,提供的是近似匹配。
  • tree 获得树状目录结构。
  • util-linux 提供一些常用的 Linux 命令,如 whereis 等。
  • wget 命令行下载功能。
  • which 提供 which 命令。

游戏
chess 国际象棋的计算引擎。
crafty 另一个国际象棋引擎。