Answers:
这就是我如何在Cygwin中编译鱼的方法。
首先,请确保我们具有以下cygwin软件包:
libncurses-devellibiconvautoconf (并不是真正依赖于鱼,但我们需要它来进行后续步骤)接下来,从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/
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, ....)
./configure接下来,我们./configure通过运行autoconf然后运行配置脚本来重建脚本:
$ autoconf && ./configure
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 ...
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>
translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 函数中set_color.c:在函数main': set_color.c:333: error: ERR'中未声明(此功能的首次使用)
libncurses-devel并更改了-I`Makefile中的更改路径(第5步)?
curses.h不包括在内(ERR在此处定义)。您可以看一眼,/usr/include/ncurses/看看是否在那里吗?
#define HAVE_NCURSES_H 1了生成的头文件config.h(出于与上述相同的原因)