回答:
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
、configureスクリプトを実行します。
$ 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
パスをインストールして変更しましたか(ステップ5)?
curses.h
は含まれていません(ERR
そこで定義されています)。覗いて、/usr/include/ncurses/
そこにあるかどうかを確認できますか?
#define HAVE_NCURSES_H 1
、生成されたヘッダーファイルに追加しましたconfig.h
(上記と同じ理由で)