วิธีการใช้เปลือกปลาใน cygwin?


15

เป็นไปได้หรือไม่ที่จะใช้เปลือกปลากับ cygwin? ฉันไม่สามารถรวบรวมซอร์สใน cygwin ได้และฉันไม่พบแพ็คเกจที่คอมไพล์แล้ว มีเหตุผลที่ดีที่ไม่มีปลาใน cygwin หรือไม่?

คำตอบ:


23

fish shell 2.1.0 ได้รับการสนับสนุนอย่างเป็นทางการแล้วใน Cygwin คุณสามารถติดตั้งได้โดยใช้เครื่องมือติดตั้งเริ่มต้น


15

นี่คือวิธีที่ฉันจัดการรวบรวมปลาใน Cygwin

ขั้นตอนที่ 1: ตรวจสอบว่ามีการติดตั้งการอ้างอิงทั้งหมด

ก่อนอื่นตรวจสอบให้แน่ใจว่าเรามีแพ็คเกจ cygwin ต่อไปนี้:

  • libncurses-devel
  • libiconv
  • autoconf (ไม่ใช่การพึ่งพาของปลาจริงๆ แต่เราต้องการในภายหลัง)

ขั้นตอนที่ 2: ดาวน์โหลดและแตกข้อมูลล่าสุด

ต่อไปดาวน์โหลดแหล่งข้อมูลล่าสุดจากhttp://fishshell.com (ฉันใช้fish-1.23.1.tar.gz ) แยกซอร์สไปยังไดเร็กทอรีที่คุณเลือกและ cd ไปที่:

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

ขั้นตอนที่ 3: แก้ไข configure.acเพื่อลบการตรวจสอบiconv

ตอนนี้ด้วยเหตุผลบางอย่าง./configureไม่สามารถตรวจจับlibiconvได้อย่างถูกต้อง เพื่อแก้ไขปัญหาเราจะลบการตรวจสอบ (เราจะระบุ lib ด้วยตนเองในภายหลัง) ต้องการทำเช่นนั้นเราแก้ไขและลบตรวจสอบconfigure.ac iconv_openการค้นหาการiconv_openเผย 3 ครั้ง; เราให้ความเห็นพวกเขาทั้งหมดออก ดังนั้นจาก:

AC_SEARCH_LIBS( iconv_open, iconv, ....)

เราเปลี่ยนเป็น:

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

ขั้นตอนที่ 4: สร้างใหม่และเรียกใช้ ./configure

ต่อไปเราจะสร้าง./configureสคริปต์ใหม่โดยการเรียกใช้autoconfแล้วเรียกใช้สคริปต์การกำหนดค่า:

$ autoconf && ./configure

ขั้นตอนที่ 5: แก้ไขMakefileเพื่อรวมเส้นทางที่ถูกต้องไปยังcurses.h

ปัญหาอื่นที่ฉันต้องเผชิญคือ curses.h - gcc หาไม่เจอ /usr/include/ncursesค้นหาอย่างรวดเร็วเผยให้เห็นว่ามันอยู่ใน

The Makefileฮาร์ดโค้ดรวมถึงพา ธ สำหรับมันCFLAGSแต่มันชี้ไปที่/usr/local/include/ncursesแทน

ดังนั้นเราจึงแก้ไขMakefileและเปลี่ยนแปลง:

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

ถึง

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

ขั้นตอนที่ 6: ส่งออกLDFLAGSไปยังลิงก์libiconvและเราก็พร้อมที่จะรวบรวม / ติดตั้ง

ในที่สุดเราส่งออกสิ่งที่จำเป็นLDFLAGSในการเชื่อมโยงiconvจากนั้นรวบรวมและติดตั้ง!

$ 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> 

+1 ฉันสามารถยืนยันขั้นตอนข้างต้นได้ ฉันยังเพิ่ม#define HAVE_NCURSES_H 1ในไฟล์ส่วนหัวที่สร้างขึ้นconfig.h(ด้วยเหตุผลเดียวกันกับที่ระบุไว้ข้างต้น)
Amro

ฉันได้ติดตั้ง libiconv และตั้งค่า LDFLAGS แล้ว แต่ฉันยังคงได้รับข้อผิดพลาด: set_color.c: 16: 20: curses.h: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว set_color.c: ในฟังก์ชันtranslate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: ในฟังก์ชันmain': set_color.c:333: error: ERR' ไม่ได้ประกาศ (ใช้งานครั้งแรกในฟังก์ชั่นนี้)
muriloq

ฉันเห็นข้อผิดพลาดนั้นในตอนแรกเช่นกัน คุณติดตั้งlibncurses-develและเปลี่ยน-Iพา ธที่เปลี่ยนแปลงใน `Makefile (ขั้นตอนที่ 5) แล้วหรือยัง
Shawn Chin

ใช่ฉันยังติดตั้ง libncurses-devel อีกครั้งเพื่อให้แน่ใจ อาจมีการพึ่งพาอื่นที่มีอยู่แล้วในระบบของคุณ? กำลังค้นหาข้อความแสดงข้อผิดพลาดฉันพบรายงานข้อผิดพลาดต่อไปนี้: sourceforge.net/tracker/ …
muriloq

@muriloq ฟังดูเหมือนcurses.hไม่รวมอยู่ ( ERRถูกนิยามไว้ที่นั่น) คุณช่วยดู/usr/include/ncurses/และดูว่ามันมีไหม
Shawn Chin

0

ตรวจสอบปัญหาปลา# 680และ# 319ที่ GitHub มีทุกสิ่งที่คุณต้องรวบรวมปลาใน cygwin


2
ลิงก์ไปยังแหล่งข้อมูลภายนอกได้รับการสนับสนุน แต่โปรดเพิ่มบริบทรอบ ๆ ลิงก์เพื่อให้ผู้ใช้ของคุณมีความคิดว่ามันคืออะไรและเพราะเหตุใด อ้างถึงส่วนที่เกี่ยวข้องที่สุดของลิงค์สำคัญเสมอในกรณีที่เว็บไซต์เป้าหมายไม่สามารถเข้าถึงหรือออฟไลน์อย่างถาวร
Ashildr
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.