• ベストアンサー

C言語のコンパイルができません

http://www.c-lang.org/primer.html 上記サイトのC入門用プログラム「hello.c」と言うソースのコンパイルを試みたのですが、エラーが出てしまいコンパイルできません。OSはwindows7でコンパイラはMinGWです。

noname#140987
noname#140987

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.3

> ld.exe: cannot open output file a.exe: Permission denied Cコンパイラは、何段階かに動作が別れていて、その最後が「リンク」と呼ばれる作業です。これで最終的な実行ファイルになります。それを行うのが「リンカ」というもので、ldはリンカです。特に指定しなければ、gccを実行すると、リンカまで順番にやってきれます。 エラーは、メッセージにある通り、a.exeに書き込めない、というものです。 原因としては ・a.exeファイルの書き込み/削除権限が無いため ・a.exeが使用中でロックがかかっているため ・(a.exeファイルが存在しないのなら)そのディレクトリの書き込みが無いため が考えられます。 ・a.exeがあったら削除する ・ファイルやディレクトリのプロパティでセキュリティタグから権限を確認する。今利用中のユーザーでフルコントロールできるかどうか というあたりを確認してみましょう。

その他の回答 (2)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

> エラーが出てしまいコンパイルできません そういうときは、まず、エラーメッセージを読むことから始めてください。 こういうところで質問する際にも、できるかぎり、そのままコピペするようにしてください。 そうでないと、答えが噛み合わないことになったり、エラーメッセージを見ればすぐに答えられる質問を何度も聞きかえさないといけなかったり、と、とても非効率的です。 さて、こっちでもコンパイルしてみましたが、手許のgccでは「警告(warning)」は出ますが、コンパイルには成功しますし、一応動作もします。あなたの言う「エラーが出てしまいコンパイルできません」というのは、エラーメッセージが出たことだけで判断していませんか? あるいは、そもそもコンパイラを使えるように設定していない、ということもあります 余談ですが、そのページだけ見ると、そこでCの勉強になるか、ちょっと疑問が残ります。

noname#140987
質問者

補足

c:/mingw/bin/../lib/gcc/mingw32/4.5.2/../../../../mingw32/bin/ld.exe: cannot open output file a.exe: Permission denied collect2: ld returned 1 exit status 上記がエラーメッセージです

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

> コンパイルできません。   この表現は、正しくなくて・・・   コンパイルしましたが、プログラムコードにエラーがあるので、  コンパイルが正常に終了しません・・・   ではありませんか?

noname#140987
質問者

補足

その通りです。

関連するQ&A

  • MingwでC++のソースがコンパイルできない。

    質問があるのですがよろしくお願いしします。 プラットフォームは Windows HOME です。 MinGWでC++のhelloworld.cppという名前のプログラム ------ここから----------- #include <iostream> using namespace std; int main(){ cout <<"Hello World!!\n"; return 0; } -------ここまで----------- を、gcc helloworld.cpp とWindowsのコマンドプロンプトから打ってコンパイルしようとしたのですが、 undefined reference to std string::size() const undefined reference to std string::operator[](using int) const undefinrd reference to std::cout undefinrd reference to std::basic_ostream<char, std::char traits<char> >&, char const*) undefinrd reference to std::ios_base::Init::() undefinrd reference to std::ios_base::~Init::() などのエラーが出て、コンパイルできません・・ hello.cという名前のC言語プログラム --------ここから------ #include<stdio.h> int main(void){ printf("Hello GCC World on Windows!!\n"); } ------ここまで------- は、gcc hello.c で正常にコンパイルでき、生成したexeファイルも正常に動きます。 また、eclipse CDT上からc++プログラムをMinGWでコンパイルすることもできるのですが・・ なぜかWindowsのコマンドプロンプトからc++プログラムをコンパイルしようとするとエラーが出てしまいます。(C言語のプログラムでもエラーが出ることが時々あります。) どなたか詳しい方いらっしゃいましたらご教授頂けると幸いです。 よろしくお願いします。

  • Vista対応のC言語のコンパイラを見つけてるのですが

    来年からC言語をメインとした仕事をしていくので今のうちから自宅でCを勉強したいと思っています。 購入したC言語の書籍には http://www.mingw.org/から配布されてる無償のMinGWというコンパイラをダウンロードして使うと書いてあったのですが Windows XPの場合と書いてあって、実際にVistaでやってみたらインストールできたものの実際にコンパイルしてみるとどうもうまくできませんでした。 Vista対応のC言語のコンパイラがありましたら教えてください。できればフリーのものがいいです。 よろしくお願いします。

  • C言語でのプログラムの作り方

    はじめまして。C言語初心者の中学一年生です。 C言語でプログラムを作ろうと思ったのですが、やり方がわかりません。 ”hello”と表示するプログラムの作り方を教えてください。 使用しているコンパイラは"Visual C++ 2010"です。パソコンはWindows xpです。 中学生でも分かるように教えてください。 エディエタ、やソースプログラムなどの用語についても教えてくださると嬉しいです。

  • C言語、度々すいません。コンパイルエラーです。

    いつも大変お世話になり誠にありがとうございます。 下記コードがコンパイルエラーになり色々と 変えてみたのですが、どうしてもコンパイルエラー となります。 度々すいません。 ご回答の程宜しくお願い申し上げます。      記 1.コード #include <stdio.h> int main(void) { char ch; printf("アルファベットの最初の文字は何ですか?\n"); ch = getchar(); printf("アルファベットの最初の文字は%cです。\n" ch); return 0; } 2.コンパイルエラー C:\MinGW>gcc test8.c -o test8 test8.c: In function 'main': test8.c:9:51: error: expected ')' before 'ch' printf("アルファベットの最初の文字は%cです。\n" ch); 上記の通りエラーメッセージが出ます。 どうしたらいいでしょうか? ご回答の程宜しくお願い申し上げます。

  • Cのコンパイルができない

    学生です 現在「C 入門の入門」という本を使ってC言語を勉強し始めています この中でプログラムのコンパイルにチャレンジするにあたり #include <sudio.h> main () { printf("C programming"); return 0; } というプログラムを書き、コマンドプロンプトから c:\Source>bcc32 sample.c と入力したのですが、 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland sample.c: エラー E2209 sample.c 1: インクルードファイル 'sudio.h' をオープンできない 警告 W8065 sample.c 4: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main ) *** 1 errors in Compile *** と表示され、コンパイルに失敗しました 参考書によるとCコンパイラの設定ミスであり、bcc32.cfg と ilink32.cfg を設定を見直せと書いてあったので必死に見直したのですが、参考書に書いてあるミスのどれも当てはまらず、何度cfgファイルを書き直しても同じ結果になってしまいました ついでに書いてあったミスとは ・C:\Borland\bcc55にBinディレクトリは存在するか? ・cfgファイルは存在するか? ・ファイルの拡張子は問題ないか?表示されているか? ・記述内容は間違っていないか? の4点です いったい何が問題なのでしょうか? まったくわからないのですが、どなたか思いつく方がいらっしゃいましたらお願いします

  • LinuxでC++ファイルをコンパイルできない

    今までWindowsのPCで研究用プログラムを書いていたのですが、 多数のプログラムを同時に動かせるLinuxの大型サーバーが導入されたので、 これを活用したいと考えています。 これまでコンパイラはBorland C++ Compiler5.5を使っていたのですが、 WinSCPとPuTTYを使ってソースコードをサーバーにコピーしてg++でコンパイルすると、 大量のエラーが出てしまいました。 QR分解などを用いて複素数の計算・推定をして統計結果を表示するプログラムなのですが、 複素数の変数を定義する部分でのエラーが多数を占めているようです。 Borland用に書いたプログラムをLinuxで動かすにはどうすればいいのでしょうか?

  • C#でコンパイルができない。

    C#のベータ版をセットアップして以下のサンプルプログラムを コンパイルしたところ、エラーがでました。何がいけないのでしょうか?OSはWin98です。 css001.cs(7,3): error CS0117: 'System.Console' does not contain a definition for 'Writeline' using System; プログラムリスト public class CSS001 { public static void Main(string[] args) { Console.Writeline("Hello World"); } }

  • Cコンパイラ(gcc)について

    はじめまして。 C言語のコンパイラについてお尋ねしても宜しいでしょうか。 以下のファイルが存在します。 ・test.c(C言語のソースファイル) ・test.exe(上記ソースをコンパイルしたもの。Windows環境で現在稼動してます) test.cの中身を一部変更し、コンパイルする必要があるのですが、 (恥ずかしながら、コンパイルした人間はもう居ないので) 何のコンパイラを使ったか、判りません。 コンパイルするときに使用したであろうコマンドがあります。 gcc test.c -WALL -03 -o test.exe 察するに、gccというコンパイラを使用したと思い MiniGW (http://yanchde.gozaru.jp/mingw/wingw_start.html) を使用してコンパイルをしてみました。 コンパイルは通るのですが、出来上がるexeファイルのサイズが 非常に小さいです。 (オリジナルのtest.exeは500KB以上ありますが、今回コンパイルで出来たものは40kbほどです) この場合、、オリジナルのtest.exeと今回コンパイルしたexeは 異なる挙動をする可能性はありますでしょうか。。 初歩的な質問で恐縮ですが、どうかご教授頂けると、幸いです。

  • FFTWでコンパイルができません。

    FFTWでコンパイルができません。 http://www32.atwiki.jp/amaeda/pages/12.html ↑のソースファイルをコンパイルすると以下のエラーが出ます。↓ >gcc -o fftw1D fftw1D.c -lfftw3 -lm (MinGW) c:/mingw/bin/../lib/gcc/mingw32/4.5.0/../../../../mingw32/bin/ld.exe: cannot find -lfftw3 collect2: ld returned 1 exit status FFTWはわからないので、教えてください。

  • 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 へはパスも通っており、リンクできているようなんですが、 エラーが出てしまいます。 どうすれば良いのかわからず、大変困っています。 だれかご存知の方、教えてください。 どうかよろしくお願い致します。

専門家に質問してみよう