Answers:
这就是我如何在Cygwin中编译鱼的方法。
首先,请确保我们具有以下cygwin软件包:
libncurses-devel
libiconv
autoconf
(并不是真正依赖于鱼,但我们需要它来进行后续步骤)接下来,从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
(出于与上述相同的原因)