Risposte:
Ecco come sono riuscito a compilare il pesce in Cygwin.
Innanzitutto, assicurati di avere i seguenti pacchetti cygwin:
libncurses-devel
libiconv
autoconf
(non è una dipendenza dei pesci, ma ne abbiamo bisogno per un passaggio successivo)Quindi, scarica l'ultima fonte da http://fishshell.com (ho usato fish-1.23.1.tar.gz ). Estrai la fonte nella tua directory di scelta e cd ad essa:
$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
configure.ac
per rimuovere i controlli periconv
Ora per qualche motivo, ./configure
non è possibile rilevare libiconv
correttamente. Per aggirare il problema rimuoviamo il controllo per esso (specificeremo manualmente la lib in seguito). Per fare ciò, modifichiamo configure.ac
e rimuoviamo i controlli per iconv_open
. La ricerca di iconv_open
rivela 3 occorrenze; li commentiamo tutti. Quindi, da:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Passiamo a:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configure
Successivamente, ricostruiamo lo ./configure
script eseguendo ed autoconf
eseguendo lo script configure:
$ autoconf && ./configure
Makefile
per includere il percorso corretto acurses.h
Un altro problema che ho dovuto affrontare era curses.h
: gcc non riusciva a trovarlo. Una rapida ricerca ha rivelato che è dentro /usr/include/ncurses
.
Il Makefile
ha un hardcoded includono percorso in CFLAGS
, ma che punti a /usr/local/include/ncurses
posto.
Quindi, modifichiamo Makefile
e cambiamo:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
per
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGS
per collegarti libiconv
e siamo pronti per compilare / installare.Infine, esportiamo il necessario LDFLAGS
per il collegamento iconv
, quindi compiliamo e installiamo!
$ 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: nella funzione main': set_color.c:333: error:
ERR' non dichiarato (primo utilizzo in questa funzione)
libncurses-devel
e modificato il -I
percorso modificato nel `Makefile (passaggio 5)?
curses.h
non sia incluso ( ERR
è definito lì). Puoi dare un'occhiata /usr/include/ncurses/
e vedere se è lì?
Controlla i problemi di pesce # 680 e # 319 su GitHub, c'è tutto il necessario per compilare il pesce su Cygwin.
#define HAVE_NCURSES_H 1
il file di intestazione generatoconfig.h
(per gli stessi motivi indicati sopra)