Можно ли использовать раковину рыбы с Cygwin? Я не смог скомпилировать исходный код в cygwin, и я не нашел никаких предварительно скомпилированных пакетов. Есть ли веская причина не иметь рыбу в cygwin?
3 ответа
fish shell 2.1.0 официально поддерживается в Cygwin, его можно установить с помощью установщика по умолчанию.
Вот как мне удалось собрать рыбу в Cygwin.
Шаг 1: Убедитесь, что все зависимости установлены
Сначала убедитесь, что у нас есть следующие пакеты cygwin:
libncurses-devel
libiconv
autoconf
(на самом деле это не зависимость от рыбы, но она понадобится нам позже)
Шаг 2: Загрузите и извлеките последний источник
Затем загрузите последний источник с 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/
Шаг 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
затем запустим скрипт configure:
$ 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>