Odpowiedzi:
Oto jak udało mi się skompilować ryby w Cygwin.
Najpierw upewnij się, że mamy następujące pakiety cygwin:
libncurses-devellibiconvautoconf (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.acaby usunąć czekiiconvTeraz z jakiegoś powodu ./configurenie można libiconvpoprawnie wykryć . Aby obejść ten problem, usuwamy zaznaczenie go (określimy bibliotekę ręcznie później). W tym celu edytujemy configure.aci usuwamy czeki dla iconv_open. Wyszukiwanie iconv_openujawnia 3 wystąpienia; komentujemy je wszystkie. Więc od:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Zmieniamy na:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configureNastępnie odbudowujemy ./configureskrypt, uruchamiając go, autoconfa następnie uruchamiamy skrypt konfiguracji:
$ autoconf && ./configure
Makefileaby podać prawidłową ścieżkę docurses.hInnym 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.
MakefileMa sztywno zawierać ścieżkę do niego w CFLAGS, ale to wskazuje /usr/local/include/ncurseszamiast.
Tak więc edytujemy Makefilei zmieniamy:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
do
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGSaby 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-develi zmieniłeś zmienioną -Iścieżkę w `Makefile (krok 5)?
curses.hnie jest dołączony ( ERRjest 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 1do wygenerowanego pliku nagłówkaconfig.h(z tych samych powodów, które podano powyżej)