Ist es möglich, die Fischschale mit Cygwin zu verwenden? Ich konnte den Quellcode in Cygwin nicht kompilieren und habe keine vorkompilierten Pakete gefunden. Gibt es einen guten Grund, keinen Fisch in Cygwin zu haben?
fish shell 2.1.0 wird jetzt offiziell von Cygwin unterstützt. Es ist möglich, es mit dem Standardinstaller zu installieren.
Hier ist, wie ich es geschafft habe, Fische in Cygwin zu kompilieren .
Stellen Sie zunächst sicher, dass wir die folgenden Cygwin-Pakete haben:
libncurses-devel
libiconv
autoconf
(keine wirkliche Abhängigkeit von Fischen, aber wir brauchen sie für einen späteren Schritt)Laden Sie als Nächstes die neueste Quelle von http://fishshell.com herunter (ich habe fish-1.23.1.tar.gz verwendet ). Extrahieren Sie den Quellcode in ein Verzeichnis Ihrer Wahl und kopieren Sie ihn auf eine CD:
$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
configure.ac
, um Schecks zu entferneniconv
Jetzt aus irgendeinem Grund ./configure
nicht libiconv
richtig erkennen . Um das Problem zu umgehen, entfernen wir die Prüfung (die lib wird später manuell angegeben). Zu diesem Zweck bearbeiten configure.ac
und entfernen wir Schecks für iconv_open
. Das Suchen nach iconv_open
enthüllt 3 Vorkommen; wir kommentieren sie alle aus. Also von:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Wir wechseln zu:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configure
Als Nächstes erstellen wir das ./configure
Skript neu, indem wir autoconf
das configure-Skript ausführen:
$ autoconf && ./configure
Makefile
, um den korrekten Pfad zu enthaltencurses.h
Ein weiteres Problem, mit dem ich konfrontiert war, war curses.h
- gcc konnte es nicht finden. Eine schnelle Suche ergab, dass es in ist/usr/include/ncurses
.
Der Makefile
enthält einen fest codierten Include-Pfad CFLAGS
, der jedoch auf verweist /usr/local/include/ncurses
.
Also bearbeiten Makefile
und ändern wir :
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
zu
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGS
um eine Verknüpfung herzustellen libiconv
, und wir können kompilieren / installieren.Zum Schluss exportieren wir die LDFLAGS
zum Einbinden notwendigen iconv
, kompilieren und installieren sie dann!
$ 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
in der generierten Header-Datei hinzugefügtconfig.h
(aus den gleichen Gründen wie oben angegeben)translate_color': set_color.c:116: warning: implicit declaration of function
strcasecmp 'set_color.c: In der Funktionmain': set_color.c:333: error:
ERR' nicht deklariert (erstmalige Verwendung in dieser Funktion)libncurses-devel
und geändert, den-I
Pfad im `Makefile geändert (Schritt 5)?curses.h
es nicht enthalten (ERR
wird dort definiert). Können Sie einen Blick darauf werfen/usr/include/ncurses/
und sehen, ob es da ist?Überprüfen Sie die Fischprobleme # 680 und # 319 bei GitHub, es gibt alles, was Sie brauchen, um Fisch auf Cygwin zu kompilieren.
quelle