Ответы:
Вот как мне удалось собрать рыбу в Cygwin.
Во-первых, убедитесь, что у нас есть следующие пакеты cygwin:
libncurses-devel
libiconv
autoconf
(на самом деле это не зависимость от рыбы, но она понадобится нам на более позднем этапе)Затем загрузите последний источник с 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
(по тем же причинам, указанным выше)