Odpowiedzi:
Oto jak udało mi się skompilować ryby w Cygwin.
Najpierw upewnij się, że mamy następujące pakiety cygwin:
libncurses-devel
libiconv
autoconf
(nie jest to tak naprawdę zależność ryb, ale potrzebujemy jej na później)Następnie pobierz najnowsze źródło ze strony http://fishshell.com (użyłem fish-1.23.1.tar.gz ). Wyodrębnij źródło do wybranego katalogu i cd do niego:
$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
configure.ac
aby usunąć czekiiconv
Teraz z jakiegoś powodu ./configure
nie można libiconv
poprawnie wykryć . Aby obejść ten problem, usuwamy zaznaczenie go (określimy bibliotekę ręcznie później). W tym celu edytujemy configure.ac
i usuwamy czeki dla iconv_open
. Wyszukiwanie iconv_open
ujawnia 3 wystąpienia; komentujemy je wszystkie. Więc od:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Zmieniamy na:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configure
Następnie odbudowujemy ./configure
skrypt, uruchamiając go, autoconf
a następnie uruchamiamy skrypt konfiguracji:
$ autoconf && ./configure
Makefile
aby podać prawidłową ścieżkę docurses.h
Innym problemem, z którym się spotkałem, był problem curses.h
- gcc nie mógł go znaleźć. Szybkie wyszukiwanie ujawniło, że jest w środku /usr/include/ncurses
.
Makefile
Ma sztywno zawierać ścieżkę do niego w CFLAGS
, ale to wskazuje /usr/local/include/ncurses
zamiast.
Tak więc edytujemy Makefile
i zmieniamy:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
do
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGS
aby połączyć libiconv
, i jesteśmy gotowi do kompilacji / instalacji.Na koniec eksportujemy niezbędne LDFLAGS
łącze iconv
, a następnie kompilujemy i instalujemy!
$ 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: W funkcji main': set_color.c:333: error:
ERR' niezadeklarowany (pierwsze użycie w tej funkcji)
libncurses-devel
i zmieniłeś zmienioną -I
ścieżkę w `Makefile (krok 5)?
curses.h
nie jest dołączony ( ERR
jest tam zdefiniowany). Czy możesz rzucić okiem /usr/include/ncurses/
i zobaczyć, czy tam jest?
Sprawdź problemy z rybami # 680 i # 319 w GitHub, jest wszystko, czego potrzebujesz, aby skompilować ryby w Cygwin.
#define HAVE_NCURSES_H 1
do wygenerowanego pliku nagłówkaconfig.h
(z tych samych powodów, które podano powyżej)