CygwinのGCCでC言語プログラムがコンパイルできない問題の解決方法
CygwinのGCCを用いてコンパイルができないという問題解決手段としてCygwinのGCCのパッケージを再インストールするという手段があります。この文書ではこの問題の解決手段およびGCCがまともに使える状態になったかどうかの確認について説明します。
1
GCCの問題
GCCでコンパイルができない例として次の二つをあげる。他の問題については解決できる保障はない。
次のコマンドを投入したとする。
$ gcc –o
foo foo.c –lm
このとき、次のいずれかのメッセージが出たとします。
A gcc: installation problem, cannot
exec `cc1’: No such file or
directory
B bash: gcc: No such file or directory
Aのメッセージが表示された場合、GCCはそのパソコンにインストールされていますが、インストール後に本来、自動的に行われるGCCの設定作業がまともに行われていません。
Bのメッセージが表示された場合にはGCCがそのパソコンにインストールされていないか、あるいはGCCのインストール後に自動的に行われるGCCの設定作業がまともに行われていません。
上記のAあるいはBのメッセージが表示された場合、CygwinのGCCのパッケージを再インストールすることでC言語プログラムをGCCで正しくコンパイルできます。以下ではその方法の説明をします。
2
GCCのパッケージの再インストール方法
ここでは、GCCのパッケージの再インストールの手順を示します。この作業は「コンピュータの管理者」の権限を持つユーザ(Administratorなど)としてWindowsにログオンして、かつパソコンをインターネットに物理的に接続してください(学内であればLANケーブルを情報コンセントに挿入)。また、この作業を行う際にはなるべく不要なアプリケーションの実行を終了して下さい(コンピュータにかかる負荷を減らし、インストール作業を確実に行うため)。
2.1
Cygwinのインストール用プログラムの取得
CygwinのGCCのパッケージを再インストールするには、Cygwinのインストール用プログラムが必要です。以下にそのインストール用プログラムsetup.exeを取得する手順を示します。
Cygwinのインストール用プログラムを置くためのフォルダを作成します。ここでは“マイ ドキュメント”フォルダの中にCygwinSetupというフォルダを作成するとします。フォルダを作成する要領は次のとおりです。
1.
エクスプローラで“マイ ドキュメント”フォルダを開く
2.
メニューバーの「ファイル」という項目をクリックし、あらわれたサブメニューの項目「新規作成」->項目「フォルダ」を順にクリックする。
3.
新たなフォルダが作成され、そのフォルダのアイコンが名前を入力する状態になる(既定の名前として「新しいフォルダ」が指定されている)ので、“CygwinSetup”と入力してEnterキーを押す。
4.
インターネットエクスプローラなどのWWWブラウザでCygwinのWebページ
を開くと、次の画面が現れる。
5.
このWebページの右側にある“Install Cygwin now”と直下に書いてあるCygwinのアイコンを左クリックする。
6.
出現した「ファイルのダウンロード」というタイトルがついたウィンドウ上の「保存」ボタンをクリックする
7.
出現した「名前をつけて保存」というタイトルがついたウィンドウ上でsetup.exeを保存しておくフォルダを選択して「保存」ボタンをクリックする。ここでは、setup.exeを「マイ ドキュメント」フォルダの中にあらかじめ作っておいたCygwinSetupというフォルダに保存する。
2.2
GCCのパッケージの再インストール
次に、上記の手順で取得したsetup.exeを用いてGCCのパッケージを再インストールする手順を示します。
1.
上記の手順でsetup.exeを保存したフォルダをエクスプローラで開き、setup.exeのアイコンをダブルクリックする。
2.
出現した“Cygwin Setup”というタイトルがついたウィンドウにおいて「次へ」ボタンをクリックする
3.
同ウィンドウ上に現れた“Install from Internet”と右に書かれたラジオボタンをクリックして、「次へ」ボタンをクリックする。
4.
同ウィンドウ上にインストール先のフォルダの指定用のボックス(その上に“Root Directory”と書かれている)が現れるが、これらは既定の設定のままにして(つまり、そのボックスの内容を書き換えたりせず、画面にあるようにC:\cygwinのままとする)、「次へ」ボタンをクリックする。
5.
同ウィンドウ上にインストール中に一時的に必要なファイルを置くフォルダを指定するボックスが現れる。そのボックスの右側にある“Browse...”ボタンをクリックする。
6.
出現した「フォルダの参照」というタイトルがついたウィンドウにおいて「マイ ドキュメント」フォルダの中のCygwinSetupフォルダをクリックして、「OK」ボタンをクリックする。
7.
“Cygwin Setup”ウィンドウにおいて「次へ」ボタンをクリックする。
8.
次に、setup.exeがインターネットに接続する方法を選択するラジオボタンが表示される。
◆学内のLANにパソコンを接続してこのインストール作業をしているならば、“Use HTTP/FTP Proxy”ボタンをクリックして、“Proxy Host”の欄に
proxy.cc.teu.ac.jp
と入力して、「次へ」ボタンをクリックする。
◆学外のネットワーク(インターネットプロバイダなど)にパソコンを接続してこのインストール作業をしているならば、“Use HTTP/FTP Proxy”ボタンをクリックして、“Proxy Host”の欄にそのネットワークにおけるプロクシサーバの名称を入力して、「次へ」ボタンをクリックする。
◆学外のネットワーク(インターネットプロバイダなど)にパソコンを接続してこのインストール作業をしていて、プロクシサーバの名称がわからないならば、“Direct Connection”ボタンをクリックして、「次へ」ボタンをクリックする。
9.
Cygwinのパッケージが保持・管理されているFTPあるいはHTTPサーバのURIを選択するボックスが表示される。この説明文書では学内のLANからネットワーク的に比較的近い
を選択する(他のURLを選択してもかまわない)。URIを選択したら、「次へ」ボタンをクリックする。
10. ”Progress”とのメッセージが同ウィンドウ上に表示され、Cygwinのパッケージの情報の取得が始まる。この作業はsetup.exeが行うので、ユーザは何もせず待っていれば次の選択項目が表示される。
11. インストールするパッケージの選択のためのボックスが同ウィンドウ上に表示される。そのボックスの左側の”Category”の列の“Devel”という項目をクリックする。
12. カテゴリ”Devel”に含まれるパッケージの一覧が表示される。ウィンドウ中のスクロールバーを動かして、”Package”という列の項目が見えるようにして、そのパッケージの一覧から“gcc: C compiler upgrade helper”という項目を探す。
13. “gcc”パッケージと同じ行の“New”の列にある数字列(上の図では3.3.3-3)が“Current”の列にある数字列(上の図では3.3.1-3)と異なっていればそのまま「次へ」ボタンをクリックする。もし上記の“New”の列に“Keep”という文字列があったら、その文字列の位置を文字が“Reinstall”に変わるまで数回クリックする。そして、「次へ」ボタンをクリックする。
14. 同ウィンドウ上に“Progress”とのメッセージが表示され、パッケージのインストール作業が始まる。この作業はsetup.exeが行うので、ユーザは何もせず待っていれば次の選択項目が表示される。
15. 以下の2件のチェックボックスが表示される。
・ Create
icon on Desktop
(デスクトップにCygwinのアイコンを作る)
・ Add
icon to Start Menu (スタートメニューにCygwinのアイコンを追加する)
この説明文書では両方のチェックボックスをクリックすると決める。チェックボックスをクリックした後、「完了」ボタンをクリックする。
16. “Installation Complete”というメッセージが表示される。そのメッセージが表示されているウィンドウにある“OK”ボタンをクリックする。
2.3
インストール後の設定
パスを設定する。
WindowsXPの[スタート]⇒[コントロールパネル]⇒[システム]⇒タブの「詳細設定」⇒[環境変数]⇒”システム環境変数”のPathに";c:\cygwin\bin;"を追加
下記のことは,不要です。
以下に、インストール後の設定作業についての説明を記します。インストール後の設定作業は上記のGCCのパッケージの再インストールにともなって、他のパッケージが更新される場合に対処するために行います。
1.
デスクトップ上のCygwinのアイコンをクリックして、Cygwinのbashを実行する。
2.
Cygwinのユーザ情報とWindowsのそれとは異なります。このため、前者の情報を後者に書き込みこむことによって、ホームディレクトリの作成などが行えるようになります。このため、Cygwinのbash(下の画面のように”$”プロンプトが出ている状態)において、以下の2つのコマンドを実行する
$ mkpasswd -l > /etc/passwd
$ mkgroup -l > /etc/group
【エラー】 もし,上記のmkpasswd実行時に次のエラー表示が出た場合
bash:
/etc/passwd: Permission denied (←エラー表示)
これは,”あなたには,/etc/passwd に書き込む権利がありません”と言っています.
この場合,Administratorでログインすること,さらに,次のコマンドを実行して,対象となるディレクトリ(フォルダ)の書き込む権利を得てください.
$ chmod
+rw /etc/passwd
/etc/groupに対する書き込みでも同様のエラーが生じたら,chmodコマンドで同様に対処してください。
次に、以下のコマンドを実行してbashの実行を終了させる
$ exit
3
GCCの動作確認
ここでは、GCCのパッケージの再インストールが確実に行われたかどうかを、実際に例題プログラムNewtonRaphson.cをコンパイルすることによって調べる手順を記します。この手順どおりに作業してもこの文書の第1節に記したエラーメッセージが表示された場合、GCCのパッケージの再インストールがまともにできていません。その場合、この文書の第2節に記した再インストール作業をもう一度してみて下さい。
以下の作業は「コンピュータの管理者」の権限を持つユーザ(Administratorなど)以外のユーザとしてWindowsにログオンしている場合でも行えます。
3.1
モデリング授業のWebページ
http://www.teu.ac.jp/kougi/hasimoto/Modeling/menu.html
をインターネットエクスプローラなどのWWWブラウザで開く
1.
このWebページ中の「授業計画」の項の第6回の行の“Download”の項にあるリンク“NewtonRaphson.c”を右クリックする
2.
出現したポップアップメニューの中の項目「対象をファイルに保存」をクリックする
3.
出現した「名前をつけて保存」というタイトルがついたウィンドウの「ファイル名」の欄に
以下の文字列を入力する。
c:\cygwin\home\<user
name>\NewtonRaphson.c
ただし、この文字列の<user name>の部分は、Windowsにログオンしたときのユーザ名で置き換えて入力する。たとえばユーザ名がsomeoneだったら、入力する文字列は
c:\cygwin\home\someone\NewtonRaphson.c
となる。このc:\cygwin\home\<user
name>の部分はCygwinを使う際の各ユーザのホームディレクトリへのパスを表している
4.
デスクトップ上のCygwinのアイコンをクリックして、Cygwinのbashを実行する。
5.
Cygwinのbashにおいて以下のコマンドを実行する。
$ gcc –o NewtonRaphson NewtonRaphson.c –lm
このコマンドによってC言語プログラムのソースファイルNewtonRaphson.cが実行可能ファイルNewtonRaphsonに変換できる(コンパイルしリンクできる)。
1.
作成したプログラムNewtonRaphsonを以下のコマンドによって実行する
$ ./NewtonRaphson
備考:なぜ、実行するのに
$ NewtonRaphson
とせずに、”./”を用いるのか?
まず、”./”はカレントフォルダ(カレントは現在いるところ、という意味)の中に存在するファイル(またはフォルダ)を指し示します。これがなくても、NewtonRaphsonを実行しようと思えばできます。しかし、ハッカーや悪い人が、別のフォルダにNewtonRaphsonという同じ名前で悪いことをするプログラム(ウィルス)を忍ばしていて、そこへのパスが優先的に割り当てられていたとします。この場合、単にNewtonRaphsonと入力すればウィルスを実行します。
一方、少なくともカレントフォルダ内は見ていますから、変なプログラムがあれば気づきます。そこで、カレントフォルダにあるNewtonRaphsonを実行したい!(その方が安全だから)という場合に、”./”を用います。