Windows 8.1にCygwin64環境を構築

前置き

普段はMac使いなので,gccやらvimやらはターミナルでの使用で事足りていますが,講義ではWindows 7上でのCygwin(32bit)環境で行っていますので,文字コードやら改行コード,その他もろもろ予期せぬ違いなどあったりするので,今回,iMacのParallels Desktop 10上の仮想マシン(Windows 8.1)環境に,Cygwin環境を導入しました.

Cygwinなんて久しぶりに触ります.かつてはThinkPadにてWindows 2000を入れて,そこでCygwin環境を構築し,研究のための画像処理プログラムやら作成していましたが,その後Windows 2000も使用に耐えなくなってきてVine Linuxに入れ替えてからCygwinなんてものはてんでご縁の無かったものですから,それから考えるともう7〜8年触っていないのかもしれません.

CygwinでX環境まで入れて遊んだ時期もありましたが,今や仮想環境が無料で手に入るようになりましたので,仮想マシンにLinuxを入れれば済むことで事足ります.ですのでわざわざCygwin環境を入れる必要はこれまで無かったのですが,実習室の環境がそうなっている以上,講義資料を作成したり,提供するソースプログラムがきちんとビルドできたりできるか確認するために,手元に同環境を置いておきたいのです.

ということで前置きが長くなってしまいましたが,ちょっと一筋縄ではいかなかったので,備忘録としてここに記載しておくことにしました.ご参考まで.

Cygwin64のインストール

せっかくなので,Cygwinも64bit環境を…,ということで,次のURLから「setup-x86_64.exe」をダウンロードしてきます.

https://www.cygwin.com/

このファイルを,ドキュメントフォルダに「cygwin」などの名前でフォルダを作成して,そこに置いておきます.

ダブルクリックして,セットアッププログラムを起動させます.

  • Choose A Download Source
    • Install from Internet」を選択
  • Select Root Install Directory
    • Root Directory: C:¥cygwin64(デフォルトのままにします.「64」を消したくなりますが…)
    • Install for: All Users(レコメンされてますのでデフォルトのまま)
  • Select Local Package Directory
    • Local Package Directory: C:¥Users¥hoge¥Documents¥cygwin(セットアッププログラムのパスが表示されます,そのまま)
  • Select Your Internet Connectio
    • Direct Connection」を選択(プロキシを使用する場合はその旨設定)
  • Choose A Download Site
    • 私はSINET経由なので北陸先端科学技術大の「ftp://ftp.jaist.ac.jp」サイトにしました
  • Select Packages
    • 以下のパッケージを指定します.(他にも必要と思いますがとりあえず…)
    •  Devel
      • gcc-core
      • gcc-g++
      • git
      • make
    • Editors
      • vim
      • vim-common
    • Net
      • curl
    • Web
      • wget

以上,行うとデスクトップ上に「E」のマークのCygwinアイコンができますので,ダブルクリックするとCygwinターミナルが立ち上がります.

このターミナルでは,日本語表示がダメダメなので,TeraTerm付属のCyglaunch(CygTerm)を利用します.既にTeraTermはインストール済みですので,Cyglaunchを起動すると…

Can’t find Cygwin directoy.

と表示されます.これは,TeraTermの設定ファイルの方で,Cygwinのディレクトリは「C:¥cygwin」とされているためです.ローカルディスク(C:)の「Program Files (x86)」の「teraterm」の中にある「TERATERM.INI」ファイルの一部を書き換えます.

106行目付近

; Cygwin install path
CygwinDirectory=c:¥cygwin64

再度,cyglaunchを起動させると,今度は,

アプリケーションを正しく起動できませんでした (0xc000007b)。[OK]をクリックして…

と出ました.(o・ω・o)…アレ?

色々調べてみると,こちらに書いてありました.

http://ttssh2.sourceforge.jp/manual/ja/usage/cygwin.html

64bit Cygwin に接続するには 64 bit Cygwin環境 でビルドされた cygterm+ プログラムが必要です。

で,「C:Program Files (x86)¥teraterm」の中には,ソースファイル「cygterm+.tar.gz」が置いてありました.

 

apt-cygの導入

ビルドするには他にも必要なファイルがいるらしい…

そこで,Cygwinのパッケージを簡単にインストールすることができる「apt-cyg」を使います.これを使うと,例えば「nano」をインストールしたい場合は,「apt-cyg install nano」とすればOK!

Cygwinターミナル(Cygwin64 Terminal)上で次のように実行します.

$ cd
$ git clone https://github.com/kou1okada/apt-cyg.git

すると,ホームディレクトリ上に「apt-cyg」ディレクトリが作成されます.その中にある「apt-cyg」というスクリプトファイルに実行権限を与えて,パスの通る場所,例えば「/usr/local/bin」にコピーします.

$ cd apt-cyg
$ chmod +x apt-cyg
$ cp apt-cyg /usr/local/bin/
$ cd

ホームディレクトリ(Cygwin上では「/home/hoge(ユーザ名)」,物理上では「C:¥cygwin64¥home¥bin¥hoge」)上の「apt-cyg」ディレクトリはもう必要ないので削除しても構いません.「git pull」で常に最新のパッケージを持って来れますが,まあ必要な時に再度ネットから取得しても良いでしょう.

では,「apt-cyg」を使ってみます.既にインストール済みのパッケージを確認するときは,

$ apt-cyg show

それでは,パッケージ名に「gcc」が入っているパッケージリストを表示してみましょう.

$ apt-cyg find gcc

では,その中から必要な「mingw64-x86_64-gcc-core」と「mingw64-x86_64-gcc-g++」をインストールしてみましょう.

$ apt-cyg install mingw64-x86_64-gcc-core mingw64-x86_64-gcc-g++

 

CygTermのビルド

これで,ビルドできる環境が整いましたので,早速CygTermをビルドしましょう.

「C:Program Files (x86)¥teraterm」の中の「cygterm+.tar.gz」をホームディレクトリの適当なディレクトリ(例えば「work」)コピーします.

$ cd
$ mkdir work
$ cp /cygdrive/c/Program\ Files\ \(x86\)/teraterm/cygterm+.tar.gz ~/work/

ターミナル上で上手く行かない方は,エクスプローラ上で行いましょう.

では,ソースファイルを展開してみます.

$ cd work
$ tar xvzf cygterm+.tar.gz

このままmakeやっちゃうとエラーが出ますので,Makefileを少しいじります.色々ググってみると「-mno-cygwinの記述の部分を削除する」とか書いてありますが,要はcyglaunch.exeをビルドするのにエラーが出ますので,cyglaunch.exeはビルドしないと決めつけてやればいいのです.ということで,Makefileの一部を書き換えます(コメントアウトします).

10行目付近

#LAUNCH = cyglaunch.exe
#LAUNCH_SRC = cyglaunch.c

それでは,makeを実行します.

$ make

なんちゃら警告は出ますが,「cygterm.exe」はビルドできています.

この「cygterm.exe」を 現在の「C:Program Files (x86)¥teraterm」の中の「cygterm.exe」と入れ替えちゃいます.
※一応,現在の「cygterm.exe」をバックアップしておいてください.

Startメニューから,「cyglaunch」を起動します.「Cygwin64 Terminal」よりもフォントとか使いやすいと思います.

 

広告

3 thoughts on “Windows 8.1にCygwin64環境を構築

  1. ふじみ野亭

    素人にわかりやすい解説を公開して頂いて感謝します。
    このページの内容の手順でcygterm+.tar.gzをコンパイルしてみました。
    しかし、次のエラーでコンパイルができませんでした。
    ———————————————————-
    cygterm.cc: 関数 ‘int accept_telnet(int)’ 内:
    cygterm.cc:725:45: エラー: ‘select’ was not declared in this scope
    if (select(FD_SETSIZE, &rbits, 0, 0, &tm) <= 0) {
    ^
    cygterm.cc: 関数 ‘void telnet_session(int, int)’ 内:
    cygterm.cc:1102:47: エラー: ‘select’ was not declared in this scope
    if (select(FD_SETSIZE, &rbits, 0, 0, 0) <= 0) {
    ^
    Makefile:26: ターゲット 'cygterm.exe' のレシピで失敗しました
    make: *** [cygterm.exe] エラー 1
    ———————————————————-
    インクルードファイルが見つかっていないのでしょうか。
    インクルードファイルへのパスは何処で設定しているのでしょうか。
    同じソースなのに何が問題なのかわかりません。
    教えて頂ければ幸いです。

    • tamochia

      ふじみ野亭様,いつも弊サイトをご覧頂きまして,誠にありがとうございます.

      基本的に,mingw64-x86_64-gcc-core,mingw64-x86_64-gcc-g++が導入されていればOKかと思いますが,
      私がこの記事を投稿してから時間がたっておりますので,バージョンが変わって対応できなくなっているかもしれません.
      明示的に sys/select.h をincludeしなければならないのかもしれません.
      いずれにしましても,当方,MSYS2/MinGW64環境に移行してしまって,現在,Cygwin64を触れる環境にありません.
      回答になっておりませんが,よろしくお願いします.

  2. ふじみ野亭

    tamo さん
    ふじみ野亭です。
    早々の回答を大変ありがとうございました。
    アドバイスの通りドンピシャリでした。
    二日間あれかこれかとこねくり回していてやっと解決できました。
    お世話になりました。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中