• ベストアンサー

cygwinwをC言語のコンパイラとして使う方法

cygwinをダウンロードして、 さっそくCのコンパイラとして使おうと思って#include<stdio.h> int main(void) { printf("Hello, World!");} を、ダウンロードの際に作られたhomeというフォルダに入れて、 gcc hello.c (hello.cというファイル名にしました) と入力しましたが、 hello.c:3:28: warning: no newline at end of file と出てきてしまい、実行ファイルを作れませんでした。 どうやったらコンパイルができるようになるか、 どんなことでもいいので、ご存知の方、 どうか教えてください! (メモ帳、windowsXPを使っていて、 恥ずかしいことですが、バージョンはわかりません・・・ 超初心者です、ごめんなさい・・・)

  • rixe
  • お礼率51% (16/31)

質問者が選んだベストアンサー

  • ベストアンサー
  • Aizaka
  • ベストアンサー率21% (12/55)
回答No.1

 こんにちは、Unixユーザーです。 gccでコンパイルするのであれば、  gcc (プログラム名).c -o (実行形式名) と記述する必要があります。(-o:小文字のオー、0ゼロと間違わないように)この場合は、  gcc hello.c -o hello と記述し、  ./hello で実行すれば、多分できると思います。

rixe
質問者

お礼

ありがとうございます、 ご指摘のとおりやってみたらちゃんとできました!

その他の回答 (2)

  • c80s3xxx
  • ベストアンサー率49% (1631/3289)
回答No.3

だから,最終行の最後に改行が入っていないんですって. メモ帳なんかで見てるからわからないんですよ. カーソルを最後の行において,右矢印キーを押し続けてると行の右端でとまりませんか? ここでEnterキーを押して改行してから保存. なお,cygwin の gcc は -o オプションをつけなくても gcc hello.c で hello.exe が生成されます. あと,Unix 使うんでしたら,vi くらい使えるようになりましょう.vi になじめなくて,Windows のエディタがいいなら,桜エディタとか.メモ帳はプログラミングにはとことん向いていません.

rixe
質問者

お礼

ありがとうございます! ワーニングメッセージも消すことができました。 あと桜エディタをダウンロードして使ってみたんですが、 行番号などもでてきて メモ帳に比べてずいぶん使いやすいですvv いいものを紹介してくださってありがとうございました。

  • c80s3xxx
  • ベストアンサー率49% (1631/3289)
回答No.2

最後の行の終りで改行してないだけでしょう.

rixe
質問者

お礼

私にはこれで正しいように思われるのですが、、、 #include<stdio.h> int main(void) { printf ("Hello, World!"); return 0; } いまだwarningメッセージは出てきます。 いったいなぜなのでしょうか?

関連するQ&A

  • C言語プログラミングについて

    #include <stdio.h> int main(void) { printf("hello,world\n"); } □■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■ #include <stdio.h> int main(void) { printf("hello"); printf(",world"); printf("\n"); } 上の2つのプログラムをコンパイルするとどのような違いが生じるんですか??printfってどんな働きをするんですか?

  • C言語

    以下のようなhello.cがあります。 include<stdio.h> int main(void) { printf("Hello World! \n"); return 0; } gcc -E hello.c と打つとプリプロセッサが表示されます。 課題はこの中からprintfに関するものを見つけ、読み取れることを説明せよとのことです。 問題の意図と解き方がわかりません。 よろしくお願いします。 環境はwsl ubuntu です。

  • 初歩的プログラミング(C言語)

    あるサイトを見つつ、C言語を学んでみようかと思い、コンパイルする直前までこぎつけました。 #include <stdio.h> void main () { printf("Hellow World!"); } とメモ帳などで打ち、 test.cとして保存しました。 cygwinでコンパイルしようとしたところ、 test.c:In function `main': test.c:4: warning:ruturn type of 'main' is not `int' と表示され、コンパイルできません。 他所でコンパイラの問題では?と言われていたのでVisual C++を使い、 ビルド、デバッグなしで開始、とすると Hello World! 続行するには何かキーを押してください... となり、成功しました。 Visual C++ を使えば問題ないのですが、どうしてcygwinではできないのか・・・と思いました。 そして確かに Visual C++で デバッグなしで開始 とすると実行できるのですが、実行ファイル(exe)というのができるときいていたのでできておらず、少し戸惑っています。 あと、Visual C++についているコマンドプロンプトを使ってできるのかな・・・とも思いましたが、使い方がよくわかりません。 私がCとC++をこんがらがって考えている(CとC++ってほとんどいっしょ?などと)せいなのかもしれませんが、教えていただけたら助かります。

  •  現在、私はC言語を学んでいます。

     現在、私はC言語を学んでいます。  プログラミングの初期の初期の問題なんですが、 「Hello World」という有名なプログラムがありますよね? それについての質問です。 #include<stdio.h> main() { printf("Hello World"); return 0; } も #include<stdio.h> main(void) { printf("Hello World"); return 0; } も #include<stdio.h> int main() { printf("Hello World"); } もちゃんと表示できます。 ここで質問です。 int main(void) int main() main() main(void) はどう違うんですか? あと、 return 0; はあっても無くてもいいようなんですが どういう意味があるんでしょうか?

  • C言語プログラミングの文字列を出力するプログラムについて

    ちょっとお聞きしたいのですが、 #include<stdio.h> void main(void) { printf("Hello World\n"); } と書いてコンパイルしたら インクルードファイル ’stdio.h’をオープンできない って出て Hello Worldってでない、、、 ちゃんとBorlandもダウンロードしたしcd設定もしたんだけど、 何が悪いのかわかりません。

  • cygwinのgccで正常にコンパイルできない。

    cygwinのgccで正常にコンパイルできない。 cygwinのvimで、以下のプログラムを書きました。 ------------------------------------------------------------- #include <stdio.h> int main(void) { int no; printf("Please input something:"); scanf("%d", &no); printf("It is %d that you input it:\n", no); return (0); } ------------------------------------------------------------- それからgccでコンパイルしました。 コマンドは以下の通りです。 $ gcc test.c すると以下のエラーが出ました。 test.c:10:9: warning: unknown escape sequence: '\033' このようにコンパイルできない状態です。 どのようにすると正常にコンパイルできるようになるでしょうか?

  • C言語コンパイラーエラーについて教えてください。

    C言語でコンパイルができなくて困っています。 コンパイルをすると、 ----------------------------------------- test.c.20:undefined reference to `getcury' test.c:20: undefined reference to `getcurx' collect2: ld returned 1 exit status ----------------------------------------- と言うエラーが出てしまい、コンパイルが完了しません。 ソースは、「test.c」と言うファイルネームで、内容は ----------------------------------------- #include <stdio.h> #include <stdlib.h> #include <curses.h> int main (void) { int y = 0, x = 0; initscr(); getyx(curscr, y, x); printw("x = %d, y = %d", x, y); refresh(); getchar(); endwin(); return 0; } ----------------------------------------- です。 OSは、Windows7 Professional SP1 コンパイラーは、MinGW Ver5.1.6. で、コマンドは gcc -o test.exe test.c -lcurses です。 確かに、curses へはパスも通っており、リンクできているようなんですが、 エラーが出てしまいます。 どうすれば良いのかわからず、大変困っています。 だれかご存知の方、教えてください。 どうかよろしくお願い致します。

  • C言語 プロトタイプ宣言

    分割コンパイルした場合のプロトタイプ宣言について質問です。 以下のプログラムをコンパイルすると警告がでます。 プロトタイプ宣言は関数を利用する側と定義側両方に必要と理解していたのですが・・・ どなたか教えていただけますでしょうか。 windows7 cygwin gccでコンパイル エラーメッセージ $ gcc -o testMain.exe testMain.c testKioku.c testKioku.c:9: 警告: conflicting types for 'func1' testKioku.c:3: 警告: previous declaration of 'func1' was here testKioku.c:17: 警告: conflicting types for 'func2' testKioku.c:4: 警告: previous declaration of 'func2' was here ソース testMain.c #include <stdio.h> void func1(void); void func2(void); int cnt=5; main(){ printf("main=%d\n",cnt); func1(); func2(); } testKioku.c #include <stdio.h> void func1(void); void func2(void); extern int cnt; func1() { cnt++; printf("func1 global cnt=%d\n",cnt); func2(); } func2() { printf("func2 global cnt=%d\n",cnt); }

  • windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでた

    windowsのコンパイラーで正しく実行されたのに、gccのコンパイラーでエラーがでたソースコードです。ファィル名test.c です。Linux(Red Hat9) gccです。windowsのコンパイラーはCPad for Borland C++Compilerです。 #include <stdio.h> void main() //intからvoidに変更した { int i, j; for (i=1; i<=9; i++){ printf("%2d ",i); //%2dで、iが2桁に表示 } printf("\n"); printf("***************************\n"); //この罫線もどきの書き方はダサいので工夫してください for (i = 1; i<=9; i++){ for (j = 1; j<= 9; j++) { printf("%2d ", i*j); if (j == 9) printf("\n"); //1行表示後改行 } } return; //voidにしたので0を取った! } これがLinux(RedHat9)gccでは以下のエラーが出ます。 (test.c: 関数 `main' 内: test.c:4: 警告: `main' の戻り値の型が `int' ではありません)  なぜ、同じソースコードでエラーが起こるのですか?  Linux gccでは、この場合`int' 以外の何が必要なのでしょうか? 以上よろしくお願いします。

  • C言語について

    #include <stdio.h> int main(void) { printf("123456\tABC DEFGHIJK\n"); printf("2006/4/14\n"); printf("programing\n"); } のprintfをすべてputsに書き換えてコンパイル・実行すると、 #include <stdio.h> int main(void) { puts("123456\tABC DEFGHIJK\n"); puts("2006/4/14\n"); puts("programing\n"); } になると思うんですけど、そのputsを用いて上のprintfを用いたプログラムと同じ出力を得るにはどのようなプログラムに変えればいいのでしょうか?

専門家に質問してみよう