เป็นไปได้หรือไม่ที่จะใช้เปลือกปลากับ cygwin? ฉันไม่สามารถรวบรวมซอร์สใน cygwin ได้และฉันไม่พบแพ็คเกจที่คอมไพล์แล้ว มีเหตุผลที่ดีที่ไม่มีปลาใน cygwin หรือไม่?
เป็นไปได้หรือไม่ที่จะใช้เปลือกปลากับ cygwin? ฉันไม่สามารถรวบรวมซอร์สใน cygwin ได้และฉันไม่พบแพ็คเกจที่คอมไพล์แล้ว มีเหตุผลที่ดีที่ไม่มีปลาใน cygwin หรือไม่?
คำตอบ:
fish shell 2.1.0 ได้รับการสนับสนุนอย่างเป็นทางการแล้วใน Cygwin คุณสามารถติดตั้งได้โดยใช้เครื่องมือติดตั้งเริ่มต้น
นี่คือวิธีที่ฉันจัดการรวบรวมปลาใน Cygwin
ก่อนอื่นตรวจสอบให้แน่ใจว่าเรามีแพ็คเกจ cygwin ต่อไปนี้:
libncurses-devel
libiconv
autoconf
(ไม่ใช่การพึ่งพาของปลาจริงๆ แต่เราต้องการในภายหลัง)ต่อไปดาวน์โหลดแหล่งข้อมูลล่าสุดจาก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
(ด้วยเหตุผลเดียวกันกับที่ระบุไว้ข้างต้น)