如何在cygwin中使用鱼壳?


15

可以将鱼壳与cygwin一起使用吗?我无法在cygwin中编译源代码,也没有找到任何预编译的软件包。在Cygwin中没有鱼有充分的理由吗?

Answers:


23

Cygwin现在正式支持fish shell 2.1.0,可以使用默认安装程序进行安装。


15

这就是我如何在Cygwin中编译的方法。

步骤1:检查是否已安装所有依赖项

首先,请确保我们具有以下cygwin软件包:

  • libncurses-devel
  • libiconv
  • autoconf (并不是真正依赖于鱼,但我们需要它来进行后续步骤)

步骤2:下载并提取最新源

接下来,从http://fishshell.com下载最新资源(我使用fish-1.23.1.tar.gz)。将源提取到您选择的目录并cd到它:

$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/

步骤3:编辑configure.ac以删除以下项目的支票iconv

现在由于某种原因,./configure无法libiconv正确检测。为了解决该问题,我们删除了对它的检查(稍后将手动指定lib)。为此,我们编辑configure.ac并删除的检查iconv_open。搜索iconv_open发现3种情况;我们将其全部注释掉。因此,来自:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

我们更改为:

#AC_SEARCH_LIBS( iconv_open, iconv, ....)

步骤4:重建并执行 ./configure

接下来,我们./configure通过运行autoconf然后运行配置脚本来重建脚本:

$ autoconf && ./configure

第5步:进行修改Makefile以包含指向的正确路径curses.h

我面临的另一个问题是curses.h-gcc找不到它。快速搜索显示它位于中/usr/include/ncurses

在中Makefile有一个硬编码的包含路径CFLAGS,但它指向/usr/local/include/ncurses

因此,我们进行编辑Makefile和更改:

CFLAGS = -I/usr/local/include/ncurses -std=c99 ....

CFLAGS = -I/usr/include/ncurses -std=c99 ...

第6步:导出LDFLAGS到中的链接libiconv,我们准备编译/安装。

最后,我们导出必要LDFLAGS的链接iconv,然后编译安装!

$ export LDFLAGS="-liconv"
$ make && make install

请享用 fish

$ fish
Welcome to fish, the friendly interactive shell
Type help for instructions on how to use fish
me@home /u/l/s/fish-1.23.1> 

+1我可以确认上述步骤可以正常工作。我还添加#define HAVE_NCURSES_H 1了生成的头文件config.h(出于与上述相同的原因)
Amro

我已经安装了libiconv并设置了LDFLAGS,但仍然出现错误:set_color.c:16:20:curses.h:没有这样的文件或目录set_color.c:在translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 函数中set_color.c:在函数main': set_color.c:333: error: ERR'中未声明(此功能的首次使用)
muriloq 2011年

最初我也看到该错误。您是否已安装libncurses-devel并更改了-I`Makefile中的更改路径(第5步)?
肖恩·钦

是的,为了确定,我什至再次重新安装了libncurses-devel。也许系统中已经存在另一个依赖项?寻找错误消息,我发现以下错误报告: sourceforge.net/tracker / ...
muriloq 2011年

@muriloq听起来好像curses.h不包括在内(ERR在此处定义)。您可以看一眼,/usr/include/ncurses/看看是否在那里吗?
肖恩·

0

在GitHub上检查鱼问题#680#319,在cygwin上编译鱼需要做的一切。


2
鼓励链接到外部资源,但是请在链接周围添加上下文,以便您的其他用户会知道它是什么以及为什么在那里。如果目标站点无法访问或永久离线,请始终引用重要链接中最相关的部分。
Ashildr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.