如何在 cygwin 上安装 gengetopt

如何在 cygwin 上安装 gengetopt

我有一些最初在 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

经过反复尝试,我终于做到了这一点。以下是所需的内容:

  1. 使用 cygwin 安装程序安装 autoconf、automake、libtool、bison、flex
  2. 从以下位置下载 tar.gz(而不是使用 git clone)这里
  3. 。/配置
  4. 由于编译问题,make 失败(这是 getopt 2.22)。我不得不补充一点:

    #包括“字符串.h”

进入 src/fileutils.cpp-此后 make 成功。

  1. 注意,在 cugwin 上,似乎您不需要 root 身份即可手动安装。简单的“make install”就可以了。

我现在似乎在 cygwin 上有一个可以运行的 gengetopt。

编辑:其实2.23是最新版本,这个版本不存在编译问题。

相关内容