Cygwin'de balık kabuğu nasıl kullanılır?


15

Balık kabuğunu cygwin ile kullanmak mümkün müdür? Cygwin'de kaynağı derleyemedim ve önceden derlenmiş paketler bulamadım. Cygwin'de balık yememek için iyi bir neden var mı?

Yanıtlar:


23

balık kabuğu 2.1.0 artık Cygwin'de resmi olarak destekleniyor, varsayılan yükleyiciyi kullanarak yüklemek mümkündür.


15

Cygwin'de balık derlemeyi nasıl başardım .

1. Adım: Tüm bağımlılıkların yüklü olduğunu kontrol edin

İlk olarak aşağıdaki cygwin paketlerine sahip olduğumuzdan emin olun:

  • libncurses-devel
  • libiconv
  • autoconf (gerçekten bir balık bağımlılığı değil, ancak daha sonraki bir adım için buna ihtiyacımız var)

2. Adım: En son kaynağı indirin ve çıkarın

Ardından, http://fishshell.com adresinden en son kaynağı indirin ( fish-1.23.1.tar.gz kullandım ). Kaynağı seçtiğiniz dizine ve cd'yi ona çıkarın:

$ tar zxvf fish-1.23.1.tar.gz -C /usr/local/src/
$ cd /usr/local/src/fish-1.23.1/

3. Adım: Düzenleyin configure.ac Kontrolleri kaldırmak için düzenleyiniconv

Şimdi bir sebepten dolayı düzgün ./configuretespit edemiyoruz libiconv. Sorunun üstesinden gelmek için kontrolünü kaldırıyoruz (daha sonra lib'i manuel olarak belirleyeceğiz). Bunu yapmak için, configure.acdenetimleri düzenler ve kaldırırız iconv_open. Arama iconv_open3 olayı ortaya çıkarır; hepsine yorum yapıyoruz. Yani:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

Şu şekilde değiştiriyoruz:

#AC_SEARCH_LIBS( iconv_open, iconv, ....)

4. Adım: Yeniden oluşturun ve çalıştırın ./configure

Ardından, ./configurekomut dosyasını çalıştırarak yeniden autoconfyapılandırır ve configure betiğini çalıştırırız:

$ autoconf && ./configure

5. Adım: Düzenleyin Makefile Doğru yolu içerecek şekilde düzenleyincurses.h

Karşılaştığım başka bir sorun curses.h- gcc bulamadı. Hızlı bir arama,/usr/include/ncurses .

Bunun Makefileiçin sabit kodlu bir ekleme yolu vardır CFLAGS, ancak bunun /usr/local/include/ncursesyerine işaret eder .

Yani, düzenliyor Makefileve değiştiriyoruz:

CFLAGS = -I/usr/local/include/ncurses -std=c99 ....

için

CFLAGS = -I/usr/include/ncurses -std=c99 ...

6. Adım: Bağlanmak LDFLAGSiçin dışa aktarın libiconv, derlemeye / yüklemeye hazırız.

Son olarak, LDFLAGSbağlantı iconvkurmak, daha sonra derlemek ve yüklemek için gerekli ihracat !

$ export LDFLAGS="-liconv"
$ make && make install

Zevk almak 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> 

+1 Yukarıdaki adımların çalışması gerektiğini onaylayabilirim. Ayrıca #define HAVE_NCURSES_H 1, oluşturulan başlık dosyasına da ekledim config.h(yukarıda belirtilen aynı nedenlerle)
Amro

Libiconv yükledim ve LDFLAGS ayarladım, ancak yine de bir hata alıyorum: set_color.c: 16: 20: curses.h: Böyle bir dosya veya dizin yok set_color.c: In translate_color': set_color.c:116: warning: implicit declaration of function strstr. 'Set_color.c fonksiyonunda: main': set_color.c:333: error: ERR fonksiyonunda bildirilmemiş (bu işlevde ilk kullanım)
muriloq

Başlangıçta da bu hatayı gördüm. `Makefile'deki (adım 5) yolu libncurses-develdeğiştirip yüklediniz -Imi?
Shawn Chin

Evet, emin olmak için libncurses-devel'i tekrar kurdum. Belki sisteminizde zaten mevcut olan başka bir bağımlılık var mı? Hata mesajını arıyorum Aşağıdaki hata raporunu buldum: sourceforge.net/tracker/…
muriloq

@muriloq Gibi sesler curses.hdahil edilmiyor ( ERRorada tanımlanıyor). Bir göz atabilir /usr/include/ncurses/ve orada olup olmadığını görebilir misin?
Shawn Chin

0

GitHub'daki 680 ve 319 numaralı balık konularını kontrol edin , cygwin'de balık derlemek için ihtiyacınız olan her şey var.


2
Dış kaynaklara bağlantılar teşvik edilir, ancak lütfen kullanıcılarınızın ne olduğunu ve neden orada olduğunu bilmeleri için bağlantının çevresine bağlam ekleyin. Hedef siteye erişilemiyorsa veya kalıcı olarak çevrimdışı olursa, her zaman önemli bir bağlantının en alakalı kısmını belirtin.
Ashildr
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.