Câu trả lời:
Đây là cách tôi quản lý để biên dịch cá ở Cygwin.
Trước tiên, hãy đảm bảo chúng tôi có các gói cygwin sau:
libncurses-devellibiconvautoconf (không thực sự là một sự phụ thuộc của cá, nhưng chúng ta cần nó cho bước sau)Tiếp theo, tải xuống nguồn mới nhất từ http://fishshell.com (Tôi đã sử dụng fish-1.23.1.tar.gz ). Trích xuất nguồn vào thư mục bạn chọn và cd vào nó:
$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/
configure.acđể xóa kiểm tra choiconvBây giờ vì một số lý do, ./configurekhông thể phát hiện libiconvđúng. Để giải quyết vấn đề, chúng tôi xóa phần kiểm tra cho nó (chúng tôi sẽ chỉ định lib theo cách thủ công sau). Để làm như vậy, chúng tôi chỉnh sửa configure.acvà loại bỏ kiểm tra cho iconv_open. Tìm kiếm cho iconv_openthấy 3 sự cố; chúng tôi nhận xét tất cả chúng ra. Từ đó:
AC_SEARCH_LIBS( iconv_open, iconv, ....)
Chúng tôi đổi thành:
#AC_SEARCH_LIBS( iconv_open, iconv, ....)
./configureTiếp theo, chúng tôi xây dựng lại ./configuretập lệnh bằng cách chạy autoconfsau đó chạy tập lệnh cấu hình:
$ autoconf && ./configure
Makefileđể bao gồm đường dẫn chính xác đếncurses.hMột vấn đề khác tôi gặp phải là curses.h- gcc không thể tìm thấy nó. Một tìm kiếm nhanh cho thấy rằng nó trong /usr/include/ncurses.
Có Makefilemột mã hóa cứng bao gồm đường dẫn cho nó vào CFLAGS, nhưng nó chỉ đến /usr/local/include/ncursesthay thế.
Vì vậy, chúng tôi chỉnh sửa Makefilevà thay đổi:
CFLAGS = -I/usr/local/include/ncurses -std=c99 ....
đến
CFLAGS = -I/usr/include/ncurses -std=c99 ...
LDFLAGSđể liên kết libiconvvà chúng tôi đã sẵn sàng biên dịch / cài đặt.Cuối cùng, chúng tôi xuất cần thiết LDFLAGSđể liên kết iconv, sau đó biên dịch và cài đặt!
$ 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: Trong chức năng main': set_color.c:333: error: ERR' không được khai báo (lần đầu tiên sử dụng chức năng này)
libncurses-develvà thay đổi -Iđường dẫn đã thay đổi trong `Makefile (bước 5) chưa?
curses.hkhông được bao gồm ( ERRđược xác định ở đó). Bạn có thể có một cái nhìn /usr/include/ncurses/và xem nếu nó ở đó?
Kiểm tra các vấn đề về cá # 680 và # 319 tại GitHub, có tất cả mọi thứ Bạn cần để biên dịch cá trên cygwin.
#define HAVE_NCURSES_H 1vào tệp tiêu đề được tạoconfig.h(vì những lý do tương tự đã nêu ở trên)