TerminalでのC言語プログラムの実行
愚問かも知れませんが、教えて下さい:TerminalのlocalhostでC言語プログラム(お馴染みのhello.c)をmakeし、実行形式helloを作成しましたが、プロンプトにhelloを入力しても"Command not found."と応答され、実行されません。どうしたら実行できるのでしょうか?
愚問かも知れませんが、教えて下さい:TerminalのlocalhostでC言語プログラム(お馴染みのhello.c)をmakeし、実行形式helloを作成しましたが、プロンプトにhelloを入力しても"Command not found."と応答され、実行されません。どうしたら実行できるのでしょうか?
a.outじゃなくてhelloと言う名前の実行ファイルが出来ているのですね?
であれば
./hello
として実行してみて下さい。
おそらくpath環境変数にカレントディレクトリが含まれていないのだと思います。
cc で無指定だと a.out になりますがそうされてますか? また,実行 file は path 指定してしていますか?(例えば ./a.out)
もだサン、koguleサン、ありがとうございます。
実行ファイル名は、helloですが、./helloと入力すると、
./hello: Permission denied.
と応答されます。どうすれば、よいのでしょうか?
lsコマンドで表示されるそのファイルの情報はどうなっていますか?
コマンドラインから
ls -l
と入力して
-rwxr-xr-x 1 oda wheel 9456 Jun 5 20:08 hello*
となっているか確認してみて下さい。
もしなっていないのであれば
chmod a+x hello
として実行属性をつけるなりしてみてください。
通常、
cc hello.c -o hello
として実行ファイルを生成したのであれば実行属性は付いているはずなのですが。
cc hello.c ; mv a.out hello
でも可。
(もだサン、ありがとうございます。また、返事が遅れてすみません。)
実は、make hello.cでコンパイルしておりました。おっしゃるように、chmodを実行して、./helloと入力すると、
./hello: Bad executable (or shared library).
と応答されました。
そこで、素直にccでコンパイルしなおすと、無事、実行できました。makeによるコンパイルでうまく実行できない理由は、何でしょうか?
make hello.cでコンパイルしておりました
(koguleさん、ありがとうございます。)
おっしゃるとおり、make hello.cでコンパイルはできません。
make helloでコンパイルしておりました。
そこで、helloを消去して、再度、make helloを実行したところ、何と./helloで正常に実行できるではありませんか。最初と違う点といえば、既に、chmodで属性(?)を変えたことが、hello消去後にも有効になっていることぐらいです。これが理由でしょうか? makeの仕組みを知らないシロウトは悲しいですね。
何か良い参考書またはWebページを御存知でしたらお教え下さい。
そこで、helloを消去して、再度、make helloを実行したところ、何と./helloで正常に実行できるではありませんか。最初と違う点といえば、既に、chmodで属性(?)を変えたことが、hello消去後にも有効になっていることぐらいです。これが理由でしょうか?
このスレッドを参考にして7年振りに、C言語プログラムを作ってみました。
久し振りにプログラミングの楽しさを味わっています。
ちょっとしたプログラムなら、いちいちProjectBuilderとやらを立ち上げるまでもなく、コマンドラインからCCでコンパイルした方が手軽ですね。
7年前にはQuadra700を使ってC言語プログラムで円周率を30万桁計算しましたが、再度試してみようかと思っています。
C言語プログラムで円周率を30万桁計算しましたが、再度試してみようかと思っています。
koguleさん、いろいろと情報をいただきありがとうございました。Rubyについては、(株)ローカス発行の「MacOSX導入パワフルガイドブック」のp.209にも紹介されていますね。今後、参考にしてみます。
TerminalでのC言語プログラムの実行