Як використовувати рибну шкаралупу в цигуїні?


15

Чи можна використовувати шкаралупу риби разом із цигуном? Я не зміг зібрати джерело в cygwin, і я не знайшов жодних попередньо складених пакетів. Чи є вагомі причини, щоб не було риби в цигуні?

Відповіді:


23

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

AC_SEARCH_LIBS( iconv_open, iconv, ....)

Ми переходимо до:

#AC_SEARCH_LIBS( iconv_open, iconv, ....)

Крок 4: Відновіть і запустіть ./configure

Далі ми відновлюємо ./configureскрипт, запустивши, autoconfпотім запустіть сценарій налаштування:

$ 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> 

+1 Я можу підтвердити, що кроки вище повинні працювати. Я також додав #define HAVE_NCURSES_H 1у створений файл заголовка config.h(з тих же причин, зазначених вище)
Amro

Я встановив libiconv і встановив LDFLAGS, але все одно я отримую помилку: set_color.c: 16: 20: curses.h: Немає такого файлу чи каталогу set_color.c: У функції translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: У функції main': set_color.c:333: error: ERR' незадекларовано (Перше використання в цій функції)
muriloq

Я спочатку бачив і цю помилку. Ви встановили libncurses-develта змінили змінений -Iшлях у `Makefile (крок 5)?
Шон Чін

Так, я навіть знову встановив libncurses-devel, лише щоб бути впевненим. Можливо, є ще одна залежність, яка вже була у вашій системі? Шукаю повідомлення про помилку Я знайшов такий звіт про помилку: sourceforge.net/tracker/…
muriloq

@muriloq Звучить, що curses.hне включається ( ERRвизначено там). Можете заглянути /usr/include/ncurses/і подивитися, чи є там?
Шон Чін

0

Перевірте випуски риб №680 та №319 на GitHub, чи є все, що потрібно для складання риби на cygwin.


2
Посилання на зовнішні ресурси рекомендуються, але будь ласка, додайте контекст навколо посилання, щоб ваші колеги користувачі мали уявлення про те, що це таке і чому воно існує. Завжди цитуйте найбільш релевантну частину важливого посилання на випадок, якщо цільовий сайт недоступний або перебуває постійно в режимі офлайн.
Ашильдр
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.