เป็นไปได้หรือไม่ที่จะใช้เปลือกปลากับ cygwin? ฉันไม่สามารถรวบรวมซอร์สใน cygwin ได้และฉันไม่พบแพ็คเกจที่คอมไพล์แล้ว มีเหตุผลที่ดีที่ไม่มีปลาใน cygwin หรือไม่?
เป็นไปได้หรือไม่ที่จะใช้เปลือกปลากับ cygwin? ฉันไม่สามารถรวบรวมซอร์สใน cygwin ได้และฉันไม่พบแพ็คเกจที่คอมไพล์แล้ว มีเหตุผลที่ดีที่ไม่มีปลาใน cygwin หรือไม่?
คำตอบ:
fish shell 2.1.0 ได้รับการสนับสนุนอย่างเป็นทางการแล้วใน Cygwin คุณสามารถติดตั้งได้โดยใช้เครื่องมือติดตั้งเริ่มต้น
นี่คือวิธีที่ฉันจัดการรวบรวมปลาใน Cygwin
ก่อนอื่นตรวจสอบให้แน่ใจว่าเรามีแพ็คเกจ cygwin ต่อไปนี้:
libncurses-devellibiconvautoconf (ไม่ใช่การพึ่งพาของปลาจริงๆ แต่เราต้องการในภายหลัง)ต่อไปดาวน์โหลดแหล่งข้อมูลล่าสุดจาก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/
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, ....)
./configureต่อไปเราจะสร้าง./configureสคริปต์ใหม่โดยการเรียกใช้autoconfแล้วเรียกใช้สคริปต์การกำหนดค่า:
$ autoconf && ./configure
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 ...
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>
translate_color': set_color.c:116: warning: implicit declaration of function strcasecmp 'set_color.c: ในฟังก์ชันmain': set_color.c:333: error: ERR' ไม่ได้ประกาศ (ใช้งานครั้งแรกในฟังก์ชั่นนี้)
libncurses-develและเปลี่ยน-Iพา ธที่เปลี่ยนแปลงใน `Makefile (ขั้นตอนที่ 5) แล้วหรือยัง
curses.hไม่รวมอยู่ ( ERRถูกนิยามไว้ที่นั่น) คุณช่วยดู/usr/include/ncurses/และดูว่ามันมีไหม
#define HAVE_NCURSES_H 1ในไฟล์ส่วนหัวที่สร้างขึ้นconfig.h(ด้วยเหตุผลเดียวกันกับที่ระบุไว้ข้างต้น)