Ответы:
Вот как мне удалось собрать рыбу в Cygwin.
Во-первых, убедитесь, что у нас есть следующие пакеты cygwin:
libncurses-devellibiconvautoconf (на самом деле это не зависимость от рыбы, но она понадобится нам на более позднем этапе)Затем загрузите последний источник с http://fishshell.com (я использовал fish-1.23.1.tar.gz ). Извлеките исходный код в каталог по вашему выбору и перейдите к нему:
$ 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запустив скрипт configure:
$ 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' undeclared (первое использование в этой функции)
libncurses-develи изменили измененный -Iпуть в `Makefile (шаг 5)?
curses.hне включен ( ERRопределен там). Можете ли вы /usr/include/ncurses/взглянуть на это и посмотреть, есть ли оно там?
Проверьте проблемы с рыбами # 680 и # 319 на GitHub, там есть все, что вам нужно, чтобы собрать рыбу на cygwin.
#define HAVE_NCURSES_H 1в сгенерированный заголовочный файлconfig.h(по тем же причинам, указанным выше)