Jawaban:
Begini cara saya berhasil mengumpulkan ikan di Cygwin.
Pertama, pastikan kita memiliki paket cygwin berikut:
libncurses-devellibiconvautoconf (bukan benar-benar ketergantungan ikan, tetapi kita membutuhkannya untuk langkah selanjutnya)Selanjutnya, unduh sumber terbaru dari http://fishshell.com (saya menggunakan fish-1.23.1.tar.gz ). Ekstrak sumber ke direktori pilihan Anda dan cd ke sana:
$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
configure.acuntuk menghapus cekiconvSekarang karena alasan tertentu, ./configuretidak dapat mendeteksi libiconvdengan benar. Untuk mengatasi masalah ini, kami menghapus centang untuknya (kami akan menentukan lib secara manual nanti). Untuk melakukannya, kami mengedit configure.acdan menghapus cek untuk iconv_open. Mencari iconv_openmengungkapkan 3 kejadian; kami berkomentar semuanya. Jadi, dari:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Kami mengubah ke:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configureSelanjutnya, kami membangun kembali ./configureskrip dengan menjalankan autoconfkemudian menjalankan skrip configure:
$ autoconf && ./configure
Makefileuntuk memasukkan jalur yang benar kecurses.hMasalah lain yang saya hadapi adalah curses.h- gcc tidak dapat menemukannya. Pencarian cepat mengungkapkan bahwa itu ada /usr/include/ncurses.
The Makefilememiliki hardcoded termasuk jalan untuk itu dalam CFLAGS, tapi menunjuk ke /usr/local/include/ncursesgantinya.
Jadi, kami edit Makefiledan ubah:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
untuk
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGSke tautan libiconv, dan kami siap untuk mengompilasi / menginstal.Akhirnya, kami mengekspor yang diperlukan LDFLAGSuntuk tautan iconv, lalu kompilasi dan instal!
$ 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: Dalam fungsi main': set_color.c:333: error: ERR' tidak dideklarasikan (penggunaan pertama dalam fungsi ini)
libncurses-develdan mengubah -Ipath yang diubah di `Makefile (langkah 5)?
curses.htidak termasuk ( ERRdidefinisikan di sana). Bisakah Anda mengintip/usr/include/ncurses/ dan melihat apakah itu ada di sana?
Periksa masalah ikan # 680 dan # 319 di GitHub, ada semua yang Anda butuhkan untuk mengkompilasi ikan di cygwin.
#define HAVE_NCURSES_H 1dalam file header yang dihasilkanconfig.h(untuk alasan yang sama disebutkan di atas)