みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

UNIXでのプログラム

UNIXでのプログラム
UNIXで、例えばC+のソフト等を動かすには、どのようにしたら良いのでしょうか? C+のソフトをコンパイルしたものを単にデレクトリー上に置けば良いのでしょうか? この辺りを解説した本があれば、ご紹介願います。 UNIXのコマンドを解説した本はあるのですが、プログラムをどのように作って動かすかの部分が分からないので宜しくお願い申し上げます。

投稿日時 - 2010-05-08 13:32:14

QNo.5880152

困ってます

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

+が一つたらないのか、他の言語なんだかわかりませんが。

UNIXでコマンドを実行するときは
まず、下準備として、実行属性を付けます。
chmod a+x ~
とかです。自分だけしか使えないようにするには u+x,og-x とか。
通常、CやC++では最終的な実行ファイルに自動で付けてくれます。

ファイル名はなんでも構いません。
テキストファイルも「コマンド」として実行できます。1バイト目から「#!」ではじまる行を書くと、そこにあるコマンドで実行します。たとえば mycommand とファイルの先頭が「#!/usr/bin/perl」と書いてあれば(かつ、実行属性があれば)
/usr/bin/perl mycommand
と実行したのと同じになります。
#!がなければshのスクリプトとして実行しようとします。

拡張子で判断するWindowsとは違います。


ファイルはどこに置いてもかまいません。

運用上の慣習として、 /usr/bin にはOSが用意したものしか置かず、追加したいものは /usr/local/bin 等といったディレクリに置きます。
ここに置いたものはだれでも実行できるようになるし、システム全体にも影響が出かねないので、管理者以外はインストールできないようになっています。

自分しか使わないけど、既存のコマンドかのようによくつかう、というなら $HOME/bin とかに置いて、環境変数PATHに$HOME/binを追加しておきます。

演習問題を実行したい、という程度なら、コンパイルした場所にそのままにしておきます。


コマンドとして入力した場合は次のようになります
1. ファイルの場所を示すパスをつけて入力した場合
./a.out とか /bin/sh とか
指定したファイルを実行します。


2. コマンド名だけ入力した場合
まず、入力したシェルでaliasや内蔵コマンドにないか調べ、あったらそちらを実行します。
無ければ、次に、環境変数PATHの:で区切られたディレクトリを順番に調べ、一致するファイルがあれば実行します。
それでもなればエラーです。

ここで、Wndowsと違うのは「カレントディレクトリから探す」というのがない、ということです。
PATHに入っていなければ、カレントディレクトリからの検索は行いません。
1のパスを指定しての実行すれば動作します。

以上をふまえて、あなたが使おうとするコマンドがどれにあたるか考えて、適切な場所に置いて、適切な方法で実行してください。

参考URL:http://www.amazon.co.jp/UNIX%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E7%92%B0%E5%A2%83-%E6%B5%B7%

投稿日時 - 2010-05-08 14:14:47

お礼

C++の間違いです。良く分かりました。ありがとうございました。

投稿日時 - 2010-05-13 22:58:01

ANo.2

このQ&Aは役に立ちましたか?

31人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

cとc++は知っているけど、c+ははじめて聞いた…。

コンパイルが完了したものを置いてあるディレクトリにパスが通っていないなら、
./hoge.o
と作成したものの前に「./」をつければ起動できます。

※UNIXのコマンドを解説している本には、必ずpathの説明もあるはずです。
※探してみましょう。

投稿日時 - 2010-05-08 13:41:32

あなたにオススメの質問