Відповіді:
Ось як мені вдалося скласти рибу в 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
належним чином. Щоб вирішити проблему, ми знімаємо чек на неї (пізніше вкажемо вкладку вручну). Для цього ми редагуємо 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
(з тих же причин, зазначених вище)