15

Можно ли использовать раковину рыбы с Cygwin? Я не смог скомпилировать исходный код в cygwin, и я не нашел никаких предварительно скомпилированных пакетов. Есть ли веская причина не иметь рыбу в cygwin?

3 ответа3

23

fish shell 2.1.0 официально поддерживается в Cygwin, его можно установить с помощью установщика по умолчанию.

15

Вот как мне удалось собрать рыбу в 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> 
0

Проверьте проблемы с рыбами # 680 и # 319 на GitHub, там есть все, что вам нужно, чтобы собрать рыбу на cygwin.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .