Antworten:
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-devellibiconvautoconf (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 entferneniconvJetzt aus irgendeinem Grund ./configurenicht libiconvrichtig erkennen . Um das Problem zu umgehen, entfernen wir die Prüfung (die lib wird später manuell angegeben). Zu diesem Zweck bearbeiten configure.acund entfernen wir Schecks für iconv_open. Das Suchen nach iconv_openenthü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, ....)
./configureAls Nächstes erstellen wir das ./configureSkript neu, indem wir autoconfdas configure-Skript ausführen:
$ autoconf && ./configure
Makefile , um den korrekten Pfad zu enthaltencurses.hEin 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 Makefileenthält einen fest codierten Include-Pfad CFLAGS, der jedoch auf verweist /usr/local/include/ncurses.
Also bearbeiten Makefileund ändern wir :
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
zu
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGSum eine Verknüpfung herzustellen libiconv, und wir können kompilieren / installieren.Zum Schluss exportieren wir die LDFLAGSzum 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>
translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: In der Funktion main': set_color.c:333: error: ERR' nicht deklariert (erstmalige Verwendung in dieser Funktion)
libncurses-devel und geändert, den -IPfad im `Makefile geändert (Schritt 5)?
curses.hes nicht enthalten ( ERRwird 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.
#define HAVE_NCURSES_H 1in der generierten Header-Datei hinzugefügtconfig.h(aus den gleichen Gründen wie oben angegeben)