जवाबों:
यहाँ बताया गया है कि मैं सिग्विन में मछली संकलित करने में कैसे कामयाब रहा ।
पहले, सुनिश्चित करें कि हमारे पास निम्नलिखित साइबर पैकेज हैं:
libncurses-devel
libiconv
autoconf
(मछली की वास्तव में निर्भरता नहीं है, लेकिन हमें बाद के कदम के लिए इसकी आवश्यकता है)इसके बाद, http://fishshell.com से नवीनतम स्रोत डाउनलोड करें (मैंने मछली का इस्तेमाल किया -1.23.1 . tar.gz )। अपनी पसंद की सीडी के लिए स्रोत निकालें और इसे सीडी:
$ 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
। इस समस्या को हल करने के लिए हम इसके लिए चेक निकालते हैं (हम बाद में लिबरल रूप से निर्दिष्ट करेंगे)। ऐसा करने के लिए, हम 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
।
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
मार्ग को स्थापित और बदल दिया है ?
curses.h
शामिल नहीं किया जा रहा है ( ERR
वहाँ परिभाषित किया गया है)। क्या आपके पास एक झांकना है /usr/include/ncurses/
और देख सकते हैं कि क्या यह वहां है?
GitHub में मछली के मुद्दों # 680 और # 319 की जाँच करें , वहाँ सब कुछ है जो आपको साइबरविन पर मछली संकलन करने की आवश्यकता है।
#define HAVE_NCURSES_H 1
जेनरेट की गई हेडर फ़ाइलconfig.h
(ऊपर बताए गए समान कारणों के लिए) में भी जोड़ा