Est-il possible d'utiliser la coquille de poisson avec cygwin? Je n'ai pas pu compiler la source dans cygwin et je n'ai trouvé aucun paquet précompilé. Y a-t-il une bonne raison de ne pas avoir de poisson à cygwin?
fish shell 2.1.0 est maintenant officiellement supporté dans Cygwin, il est possible de l'installer en utilisant l'installateur par défaut.
Voici comment j'ai réussi à compiler du poisson dans Cygwin.
Tout d'abord, assurez-vous que nous avons les packages cygwin suivants:
libncurses-devel
libiconv
autoconf
(pas vraiment une dépendance du poisson, mais nous en avons besoin pour une étape ultérieure)Ensuite, téléchargez la dernière source sur http://fishshell.com (j'ai utilisé fish-1.23.1.tar.gz ). Extrayez la source dans votre répertoire de choix et cd-y:
$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
configure.ac
pour supprimer les chèquesiconv
Maintenant, pour une raison quelconque, ./configure
ne peut pas détecter libiconv
correctement. Pour contourner le problème, nous supprimons la vérification (nous spécifierons la bibliothèque manuellement plus tard). Pour ce faire, nous éditons configure.ac
et supprimons les chèques iconv_open
. La recherche de iconv_open
révèle 3 occurrences; nous les commentons tous. Donc, à partir de:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Nous changeons pour:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configure
Ensuite, nous reconstruisons le ./configure
script en exécutant autoconf
puis exécutons le script de configuration:
$ autoconf && ./configure
Makefile
pour inclure le chemin correct verscurses.h
Un autre problème que j'ai rencontré était curses.h
- gcc n'a pas pu le trouver. Une recherche rapide a révélé que c'était le cas /usr/include/ncurses
.
Le Makefile
possède un chemin d'inclusion codé en dur CFLAGS
, mais il pointe à la /usr/local/include/ncurses
place.
Donc, nous éditons Makefile
et changeons:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
à
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGS
pour créer un lien libiconv
et nous sommes prêts à compiler / installer.Enfin, nous exportons le nécessaire LDFLAGS
pour créer un lien iconv
, puis compilons et installons!
$ 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>
#define HAVE_NCURSES_H 1
dans le fichier d'en-tête généréconfig.h
(pour les mêmes raisons que celles mentionnées ci-dessus)translate_color': set_color.c:116: warning: implicit declaration of function
strcasecmp 'set_color.c: Dans la fonctionmain': set_color.c:333: error:
ERR' non déclaré (première utilisation dans cette fonction)libncurses-devel
et modifié le-I
chemin modifié dans le `Makefile (étape 5)?curses.h
n'est pas inclus (ERR
est défini ici). Pouvez-vous jeter un coup d'œil/usr/include/ncurses/
et voir s'il est là?Vérifiez les problèmes de poisson # 680 et # 319 sur GitHub, il y a tout ce dont vous avez besoin pour compiler du poisson sur cygwin.
la source