• ベストアンサー

Linux上で、C言語で作ったプログラムを実行させる方法

VineLinux2.1のvi:スクリーンエディタを利用して簡単なプログラムを実行させたいのですが、コンパイルしたファイルを実行すると a.out : command not found というエラーがでてきます。 実行のさせ方がおかしいのでしょうか? 今回作ったプログラムです。 #include <stdio.h> int main(){ printf("Hello World!"); return 0; }

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

  • ベストアンサー
  • piroping
  • ベストアンサー率50% (11/22)
回答No.3

Segmentation fault が表示されたということは実行できたということですね。 # …でも、真っ当なプログラムになってないみたいですが。 Path (←プログラムを探すディレクトリ…というと語弊があるかな?) に Current Directory (現在のディレクトリ)が含まれていないので、 Current Directory のファイルを実行する場合には、 「./」をファイル名の前に書いてやるなどの必要があるのです。 このあたりは DOS とは違います。

masaru_kai
質問者

お礼

新しく作ったディレクトリで作業をしていたので駄目だったというわけですね。 実行できているということは、プログラムの組み方が間違っているということですね。 ありがとうございました。 プログラムをいじっていろいろ試してみます。

その他の回答 (4)

  • inetd
  • ベストアンサー率23% (43/184)
回答No.5

コンパイル後にカレントディレクトリに作られた a.out を実行する時は ./a.out でやってた方が良いと思います。PATH の設定を変えてカレントディレクトリも実行できるようにしちゃうとちょっと危なっかしいと思うので。 で、 Segmentation fault と出るというのはそのプログラムのどこかが間違っていてNULLポインターをアクセスしていたりするからだと思いますが、見た感じ間違いようがなさそうなプログラムですね・・・。よくわかりませんが、他のプログラムもそのディレクトリでコンパイルしていてその時作られた別のプログラムの a.out が残っていたりしませんか? その疑いがある場合は再度コンパイルしてから実行してみましょう。 あと、たいした問題ではありませんが、そのプログラムのままだと Hello World! の文字列出力後に改行がないので見た目が変になるかも知れません。なので printf("Hello World!\n"); にした方が良いかも(両方試してみれば違いが分かると思います。わからなかったら printf("Hello\nWorld!\n"); とかして見ましょう。\n が何かということについては入門書などを見て確認して下さい)。

masaru_kai
質問者

お礼

>で、 Segmentation fault と出るというのはそのプログラムのどこかが間違っていてNULLポインターをアクセスしていたりするからだと思いますが、見た感じ間違いようがなさそうなプログラムですね・・・。よくわかりませんが、他のプログラムもそのディレクトリでコンパイルしていてその時作られた別のプログラムの a.out が残っていたりしませんか? その疑いがある場合は再度コンパイルしてから実行してみましょう。 すみません。確認してみるとa.outは別のプログラムでした。 あと、\nの有無の違いもちゃんと分かりました。 ありがとうございました。

  • piroping
  • ベストアンサー率50% (11/22)
回答No.4

追記です。 下記 URL を参照してください。

参考URL:
http://www.jp.freebsd.org/QandA/HTML/130.html
  • n_tonbi
  • ベストアンサー率75% (9/12)
回答No.2

ひょっとして実行許可をしてなかったりしてσ(^^) #chmod a+x a.out

masaru_kai
質問者

お礼

回答ありがとうございます。 #chmod a+x a.out #a.out bash: a.out: command not found と、なりました。 プログラムがおかしいのでしょうか?

  • piroping
  • ベストアンサー率50% (11/22)
回答No.1

command not found なので、そのまま a.out が見つからないというエラーかと思います。 ls で見たときに a.out はできていますか? ./a.out と叩くとどうでしょうか? # Current Directory に Path が張ってない関係?

masaru_kai
質問者

お礼

回答ありがとうございます。 ls で見たときに a.out は緑色で出てきています。 ./a.out と叩くと Segmentation fault (core dumped) と、出てきました。 # Current Directory に Path が張ってないというのは、どういうことなんでしょうか?

関連するQ&A