• ベストアンサー

Cプログラムのファイルを実行するには?

LinuxでCプログラミングをおこない、a.cというファイルをコンパイルをしたのですが、結果できたaというファイルを実行しようとしても実行できません…。どうやれば実行できるのでしょうか?初歩的な質問ですいません。。

  • anzan
  • お礼率32% (9/28)

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

  • ベストアンサー
  • kochory
  • ベストアンサー率45% (167/370)
回答No.3

プロンプトから"echo $PATH"と打ち込んでenterを押してみて下さい。 出てくるディレクトリの羅列の中にカレントディレクトリ ("./"のこと)が入ってなければ、#2さんのおっしゃるように、 明示的にそのファイルのパスを指定してやらないと実行されません。 $PATHという変数には、「コマンドラインからファイル名を 入力するだけで起動できる実行ファイル」が入っている ディレクトリのパスが入っています。 逆に言うと、この変数に入っていないディレクトリにある 実行ファイルは、ファイル名だけを打ち込んでも実行されず、 そのファイルへのパスを指定してやらないといけません。 シェルの設定ファイルをいじれば$PATHにパスを追加する ことができますが、カレントディレクトリ("./")を$PATHに 入れるのは、セキュリティ上お勧めできません。 (とはいっても実際は、入っていたほうが便利なので 入れちゃってる人も多いと思いますが。やるならやり方は 自分で調べて、自己責任でやってください)

anzan
質問者

お礼

なるほどなるほど。。ためになりますm(_ _)mありがとうございます。やり方だけでなく、その原理まで丁寧に教えていただいて、とても助かりました。またなにかありましたらよろしくお願いします(^^;)

その他の回答 (2)

noname#223623
noname#223623
回答No.2

カレントディレクトリにaがあれば $ ./a

anzan
質問者

お礼

教えていただいたとうりにしてみたらできました。ありがとうございました。

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.1

chmod 777のような感じで実行属性を付けて./aのように実行してはどうでしょうか?

anzan
質問者

お礼

教えていただいた通りにやってみたらできました。ありがとうございました。。

関連するQ&A

  • Foderaでプログラムを実行する方法

    C言語の勉強のためにFodera Core 6を入れて Windowsとデュアルブート環境にしたのですが gccでコンパイルしたファイルを実行できません。 どうしたら実行できるのか教えてください。 プログラミングにはあんまり詳しくなくて 初歩的な質問ですみません。

  • 他の実行ファイルを実行するプログラム

    他の実行ファイルを実行するプログラムを作りたいです。 わかりにくいと思うので例を書いて説明します。 まずhello.cというプログラムがあったとします。 中身は -hello.c----------------- #include <stdio.h> main(){ printf("Hello!\n"); } -------------------------- これをコンパイルしてできた実行ファイルを他のプログラムから呼び出す?実行したいんです。 説明が下手ですいません(>_<) たとえば新しくexe.cというプログラムを作ります。 このexeを実行するとhello.exeが呼び出されて 結果的にhello.cの中身が実行されるような exe.cを作りたいです。 初歩的な質問ですいません。 どなたかアドバイスいただけないでしょうか(>_<)

  • Linuxで実行ファイルを実行

    Linux上でC言語をコンパイルし、作成された実行形式ファイルを実行しようとしたのですが、実行できません。 作業フォルダは /var/www/html です。 gcc program.c でコンパイル、 作成されたa.out(ls でフォルダ内にあるのは確認済です) を以下の方法で実行しようとしましたが、全てできませんでした。 1. [root@host-210-161-57-177 html]# a.out bash: a.out: command not found 2. [root@host-210-161-57-177 html]# ./a.out opendir: No such file or directory 3. [root@host-210-161-57-177 html]# %./a.out bash: fg: %./a.out: no such job 4. [root@host-210-161-57-177 html]# % ./a.out bash: fg: %: no such job gcc -o program program.c でファイル名を指定してコンパイルしてみても同様の結果でした。 ご存じの方、どうかご回答をよろしくおねがいします。

  • C++のソースをコンパイルしてできた実行ファイル

    のトラブルです。ちなみにプログラミングはかなりの初心者です。 サンプルソース等をコンパイルして実行ファイルを作成しても、実行ウィンドウが固まってしまいます。 どのプログラムでコンパイルしても同じです。二台のPCのVisual C++でやってみましたが(VistaデスクトップとXPノート)、どちらでもビルドが正常終了した後実行ファイルを確認するとファイル名の表示されたウィンドウが真っ白のまま固まってます。borlandのC++Builderで作成した実行ファイルも実行ウィンドウが同じ状態になりました。CD-ROM添付のサンプル実行ファイルだけはしっかり表示されました。 猫でもわかるゲームプログラミングで勉強しようとしています。 どなたか分かる方ご回答お願いしますm(_ _)m

  • プログラムの実行結果が更新されない(mac)

    macでjavaプログラミングの勉強をしています。 わからないところがあるので質問させてください。 初歩的なappletをブラウザを使って実行し結果を確認、 パラメータを変えて実行結果の変化を見たいときのことなのですが、 実行結果が前の結果のままです。 javaのソースを書き換えてコンパイルし直しているのですが。 なにをやっても、ソースを書き直した結果が出ず その前の実行結果が出ます。 os は 10.9 開発環境はxcode1.1 java1.4.2 よろしくお願いします。

  • exeファイルを実行するとコマンドプロンプトがすぐに閉じる

    最近C言語でのプログラミングを始めたばかり なんですが、プログラムをコンパイルすると exeファイルができますよね。 そのexeファイルを実行したときに、 コマンドプロンプトが一瞬開いて結果が表示され すぐに閉じてしまうので、内容を確認することが できません。 どうしたら、すぐに閉じないようにできるでしょうか?

  • Borland C++ Builderで簡単なC言語プログラムの作成・実行

    Borland C++ Builderで簡単なCのプログラムを作り実行させるにはどうしたらよいですか? DOS窓上でコンパイルするのではなく、Borland C++ Builderのメニューから行いたいのです。 一応、「ファイル→新規作成→その他→Cファイル」でCのファイルは作成できるのですが、このファイルを「プロジェクト→ユニットのコンパイル」でコンパイルすることができません。 Formオブジェクト(?)を作成しておくとコンパイルできます。 Formは特に必要ないので、FormなしでCのファイルだけをコンパイルしたいのです。 DOS窓でのコンパイル・実行はできます。 事情があってBorland C++ Builderを使わなくてはなりませんので、他のIDEはこの際全く解決になりません。 よろしくお願いします。

  • コマンドプロンプトからCの実行ファイルを作りたい

     今日は、C初心者です宜しくお願いします。  コマンドプロンプトから、「abc.c」というファイルをコンパイルす ると自動的に実行ファイルが「a.exe」という 名前のファイルが出来ますが、自分でこの名前を指定する書き方はあるのでしょうか。

  • C++の実行

    Borland C++ Compiler 5.5をインストールして、 コンパイルはできましたが、 exeファイルを実行できません。 どうしたらよいでしょうか?

  • 既存のCプログラムをMS Visual C++へ移行して実行したい

    同じような質問がでていましたら、すみません。 いままでWS(unix)で作っていたC言語のプログラムをWindowsで実行しようと しています。 Microsoft Visual C++ 6.0 Proを購入し、 新規でプロジェクトを作成するところで止まってしまいました。 「プログラムをコンパイルして、あるバイナリファイルを読み込み、 指定したファイルへ結果を書き込む」 という操作がしたいのですが、プロジェクトの種類はどれにすればいいのでしょうか? また、ファイルを読み込む際、メインと関数は別のファイルになっているの ですが、コンパイルはどのように指定すればいいのでしょうか? もうひとつ、今までargv[]で入出力ファイルを指定していました。 # (メイン)(入力ファイル) (出力ファイル)のように この処理はVC++でできるのでしょうか? VC++の入門の本を購入したのですが、Cのプログラムについては なかなか載っていないので困っています。 よろしくお願いします。