我有一些最初在 Linux 上开发的 C 代码,它利用 gengetopts 来解析命令行。我也想在 cygwin 上构建该代码。
(在 Linux 上,我只需执行“apt-get install gengetopt”,一切就正常了。
我在 cygwin 上找不到任何类似 gengetopt 的包,因此我尝试按照以下说明从源代码进行构建指示。
但当我尝试时:
sh ./configure.ac
我首先收到一个错误,需要用 dos2unix 进行修复,然后出现以下错误:
$ sh ./configure.ac
./configure.ac: line 18: dnl: command not found
./configure.ac: line 19: syntax error near unexpected token `GNU'
./configure.ac: line 19: `AC_INIT(GNU gengetopt,2.23)'
配置文件中的相关行是:
dnl Process this file with autoconf to produce a configure script.
AC_INIT(GNU gengetopt,2.23)
我确实确保安装了 autoconf、bison、flex 和 m4。cygwin 中的默认 shell 似乎是 bash。有什么问题?“dnl”是什么 - 似乎是内置的 linux。如果是这样,为什么它不是 cygwin 的一部分?
有没有更简单的方法可以做到这一点?这一切看起来有点兼容性混乱。在 cygwin 上安装软件包通常这么难吗?
答案1
经过反复尝试,我终于做到了这一点。以下是所需的内容:
- 使用 cygwin 安装程序安装 autoconf、automake、libtool、bison、flex
- 从以下位置下载 tar.gz(而不是使用 git clone)这里
- 。/配置
由于编译问题,make 失败(这是 getopt 2.22)。我不得不补充一点:
#包括“字符串.h”
进入 src/fileutils.cpp-此后 make 成功。
- 注意,在 cugwin 上,似乎您不需要 root 身份即可手动安装。简单的“make install”就可以了。
我现在似乎在 cygwin 上有一个可以运行的 gengetopt。
编辑:其实2.23是最新版本,这个版本不存在编译问题。