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-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>
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 -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.
#define HAVE_NCURSES_H 1
in der generierten Header-Datei hinzugefügtconfig.h
(aus den gleichen Gründen wie oben angegeben)