Jawaban:
Begini cara saya berhasil mengumpulkan ikan di Cygwin.
Pertama, pastikan kita memiliki paket cygwin berikut:
libncurses-devel
libiconv
autoconf
(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.ac
untuk menghapus cekiconv
Sekarang karena alasan tertentu, ./configure
tidak dapat mendeteksi libiconv
dengan benar. Untuk mengatasi masalah ini, kami menghapus centang untuknya (kami akan menentukan lib secara manual nanti). Untuk melakukannya, kami mengedit configure.ac
dan menghapus cek untuk iconv_open
. Mencari iconv_open
mengungkapkan 3 kejadian; kami berkomentar semuanya. Jadi, dari:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Kami mengubah ke:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configure
Selanjutnya, kami membangun kembali ./configure
skrip dengan menjalankan autoconf
kemudian menjalankan skrip configure:
$ autoconf && ./configure
Makefile
untuk memasukkan jalur yang benar kecurses.h
Masalah lain yang saya hadapi adalah curses.h
- gcc tidak dapat menemukannya. Pencarian cepat mengungkapkan bahwa itu ada /usr/include/ncurses
.
The Makefile
memiliki hardcoded termasuk jalan untuk itu dalam CFLAGS
, tapi menunjuk ke /usr/local/include/ncurses
gantinya.
Jadi, kami edit Makefile
dan ubah:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
untuk
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGS
ke tautan libiconv
, dan kami siap untuk mengompilasi / menginstal.Akhirnya, kami mengekspor yang diperlukan LDFLAGS
untuk 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-devel
dan mengubah -I
path yang diubah di `Makefile (langkah 5)?
curses.h
tidak termasuk ( ERR
didefinisikan 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 1
dalam file header yang dihasilkanconfig.h
(untuk alasan yang sama disebutkan di atas)