電子書籍の厳選無料作品が豊富!

以前Cygwinでgccが使えないという大変初歩的な質問をいたしましたが・・・

gccはインストールできたのですが、今度はメモ帳でプログラムを書いても、コンパイルできないのです。ファイルがない、といわれてしまいます。

Windows XPを使っているのですが、メモ帳で書いた後どうしたらよいか教えてください。

すごく初歩的な質問ですみません。
でもなんとか家で使えるようにならないと授業についていけないんです・・(涙)お願いします。

A 回答 (10件)

Cygwin + gccでやってみたところ、


--test.c
int main(){}
--↑改行なし
> $ gcc test.c
> test.c:1:13: warning: no newline at end of file

確かにでますね。
が、これはwarning(警告)ですし、通常無視してもなんら問題のない(文法ミスの可能性を指摘するものではなく、記述方式そのものによる)警告です。

まあこのようなwarningを出さないプログラムを書くのが重要なので、ソース末尾の改行は入れておいたほうがよいでしょう。
    • good
    • 0
この回答へのお礼

何度も初歩的な質問に答えてくださり、ありがとうございます!
プログラムの最後に改行を加えたところ、上手く動きました^^どうもありがとうございました。

お礼日時:2005/05/23 20:47

> エラーメッセージで『no newline at the end of file』


> とでるのですがどういうことなのでしょうか?

文字通りにとれば、ファイルの最後の行に改行がないというエラーのようですが…

いま手元にcygwinの環境がないので確認できませんが、これがコンパイラのエラーであれば、一度ソースファイルの最後に改行をひとつ入れてみてはいかがでしょうか。
    • good
    • 0

> 違うことなのですが、今学校ではプログラムを実行する


> ときは『./a.out』としているのですが使えず、
> 『./a.exe』だと実行できるのですが・・・

学校ではワークステーションかLinux PCでやっていらっしゃるのですね。
それは、WindowsとUnixのファイルに対する考え方の違いに由来します。

Unixでは、ファイル名はただのファイル名であり、明示的にアプリケーション内で指定しない限り拡張子は必要ありません。単なる記号と言っても良いでしょう。プログラムをシェルが直接実行できるかどうかは、ファイルのモード(chmodで指定するモード)によります。また、ファイルが何を使って実行するかは、fileコマンドを使えばわかりますし、スクリプトであれば最初の行に実行するためのプログラムを指定することになっています。指定されていなければ現在のシェルが直接スクリプトを処理することになります。
それに対してWindowsでは、ファイル名+拡張子という構造でファイルの種類を決めることになっており、ファイルにはモードという概念はありません。現在のWindows xpでは、exe com scr 等の拡張子が実行可能として登録されています。

cygwinは、あくまでもwindows上でwindowsの環境を拡張してunix互換環境を用意しようという試みですので、ベースになる技術はwindowsそのものです。ですから、unixでは本来動作しないwindows用のnotepad.exeがbashから呼び出せるのです。また、逆に、windowsでは、a.outという実行ファイルができたところで、動作させることはできません。先に説明したように決まった拡張子がないとwindowsは実行可能とは判断しないからです。
Visual C++やBorland CなどのWindows用として作られたコンパイラ・リンカでは、伝統的にmain関数があるファイルのファイル名に.exeをつけたファイルを出力することが多い(cl test.c → test.exe)のですが、cygwinのgccは、unix風のa.outのかわりにa.exeを出力するのです。

蛇足ですが、a.outというのは、unixでは昔から使われていた実行バイナリ形式の名前としても使われています。
参考:http://www.itmedia.co.jp/help/tips/linux/l0448.h …

> もう少し余裕ができた時にフリーのエディタについて考えて
> みたいと思います。

C言語のエディット用に設計されたエディタには、予約語を強調表示したり、関数定義の場所を探してキーひとつでジャンプしたり、コンパイラを呼び出して実行ファイルを作ったりといろいろな機能があったりするので時間があるときにいろいろ試してください。
    • good
    • 0
この回答へのお礼

ちょっとした疑問なのに、詳しく教えてくださってありがとうございます。


またまた問題が発生しまして・・

エラーメッセージで『no newline at the end of file』とでるのですがどういうことなのでしょうか?プログラムはテキストに載っているとおりにしているので、原因が全くわかりません。

お礼日時:2005/05/22 19:56

> メモ帳でプログラムを書いても



ソフトの紹介

メモ帳より、Editorの方が使い良いですよ。
わたしは市販のEditorを使っていますが、フリーでも良いのがあります。

●フリーのエディタ
TeraPad
http://www5f.biglobe.ne.jp/~t-susumu/

NoEditor, UnEditor
http://www.yokka.com/yokkasoft/

PeggyPad
http://www.anchorsystems.co.jp/

●コンパイル例
gcc test.c
gcc test.c -o test
gcc test.c -o test -Wall
g++ test.cpp
オプション
-o test は test.exe を作成します。指定しなければ
a.exeが作成されます。-Wallはワーニングを表示します。

●Open Command Window Here
http://homepage1.nifty.com/kazubon/progdoc/poor/ …
http://www.kaimei.org/note/mag/ocwh.html
    • good
    • 0
この回答へのお礼

ありがとうございます!
とりあえず今はプログラムが実行できるようになったので、もう少し余裕ができた時にフリーのエディタについて考えてみたいと思います。

お礼日時:2005/05/21 18:55

…あ~質問の意図を誤解してました。



> メモ帳で書いた後どうしたらよいか教えてください。

次回から、先の回答のようにすれば、bashで管理する形式のディレクトリにファイルが作れますが、今回どうしたらいいのかということですよね。

CygwinのインストールディレクトリをC:\Cygwin
ユーザー名をayari
と仮定すると、ホームディレクトリは
C:\Cygwin\home\ayari
となります。
マイコンピュータからC:\Cygwin\home\ayariへファイルをコピーして、bashを起動すると、そこにファイルがあるはずです。
    • good
    • 0
この回答へのお礼

ありがとうございました!

違うことなのですが、今学校ではプログラムを実行するときは『./a.out』としているのですが使えず、『./a.exe』だと実行できるのですが・・・

プログラムが動くのでどちらでもいいのですが、ちょっと気になったもので^^;

お礼日時:2005/05/21 19:00

bash上から


$ notepad xxxx.c
としてメモ帳を起動してください。

ファイルが現在のディレクトリ上に作成されます。

pathが通っていない場合は、/cygdrive/c/windows/にパスを通すように設定しましょう(普通は通っているはず)
    • good
    • 0
この回答へのお礼

ありがとうございました!
notepad test.cで作って保存したらコンパイル、実行できました。どうもありがとうございました!

お礼日時:2005/05/21 18:50

メモ帳で書いたソースをどこに保存しましたか?


マイドキュメントに保存してしまうと、Cygwinから使うのは大変なので、Cygwinのホームディレクトリか、その下の(自分で作った)ディレクトリに保存するようにしてください。

Cygwinのホームディレクトリは、CygwinをC:\cygwinにインストールしたとすると、
C:\cygwin\home\ユーザー名
になります。
(変な設定をしていない限り)bashを開いて最初にいるディレクトリはここになります。
エクスプローラで見るか、lsコマンドを使うなどして、本当にそこにソースファイルがあるか確認してみてください。

できれば、いきなりメモ帳を開くのではなく、エクスプローラの新規作成でテキストドキュメントを作り、名前を変更してからメモ帳で編集した方が便利かと思います。
    • good
    • 0
この回答へのお礼

丁寧にありがとうございました!

お礼日時:2005/05/21 18:49

>gccはインストールできたのですが、今度はメモ帳でプログラムを書いても、コンパイルできないのです。

ファイルがない、といわれてしまいます。

メモ帳で書いたプログラムをどこに保存しましたか?
Cygwinでは、WindowsでのC:\は/cygdrive/cとなります。
(例)C:\にtest.cを保存した場合
 $ cd /cygdrive/c
 $ gcc -o test test.c
    • good
    • 0
この回答へのお礼

ありがとうございました!

お礼日時:2005/05/21 18:48

名前をつけて保存する際のファイル名を


xxxx.cとか、yyyyy.cpp とか 「.」以降
の指定をしてください。
メモ帳では、デフォルトが「.txt」になって
います。
    • good
    • 0
この回答へのお礼

ありがとうございました!
拡張子をcにするように気をつけます。

お礼日時:2005/05/21 18:47

hogehoge.txtのように、拡張子が.txtとして保存されているからではないでしょうか。



保存するときに「ファイルの種類」を「すべてのファイル」にして、「hogehoge.c」のようにしておけば、Cのソースとして認識されるように思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございました!
拡張子に気をつけます。

お礼日時:2005/05/21 18:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報