質問
私は.c
コマンドを使用してcc
ファイルをコンパイルすると、それはa.out
実行可能ファイルを作成します。私はそれが私の現在のディレクトリ内a.out
ファイルを作成することに気付きました。私は、システム上に起こるどこa.out
ファイルと同じディレクトリに作成さ.c
ファイルを作成する方法はありますか?
は、たとえば私の現在のパスが~/desktop
であれば、私は、コマンドを入力します
cc path/to/my/file/example.c
それはa.out
ディレクトリ内~/desktop
ファイルを作成します。私はそれがa.out
でpath/to/my/file/a.out
ファイルを作成したいと思います。
解決
あなたは-oスイッチを使用すると、CCを呼び出すたびに使用する必要があります
cc -o path/to/my/file/a.out path/to/my/file/example.c
またはあなたが作ることができ、このようなラッパースクリプトます:
mycc
#!/bin/bash
dirname=`dirname "$1"`
#enquoted both input and output filenames to make it work with files that include spaces in their names.
cmd="cc -o \"$dirname/a.out\" \"$1\""
eval $cmd
あなたが呼び出すことができます。
./mycc path/to/my/file/example.c
とその意志、順番に、コール
cc -o "path/to/my/file/a.out" path/to/my/file/example.c
あなたのようにそれを呼び出すことができますので、あなたは$ PATHにmyccを置くことができ、もちろんます:
mycc path/to/my/file/example.c
他のヒント
あなたは、出力ファイルを定義するための「-o」フラグを与えることができます。たとえばます:
cc path/to/my/file/example.c -o path/to/my/file/a.out
はい、-o
でます。
cc path/to/my/file/example.c -o path/to/my/file/a.out
これは、あなたが探しているものではないかもしれないが、あなたは簡単にこのよう-o
のsiwtchを使用してコンパイルの出力をリダイレクトすることができます:
cc -o /a/dir/output b/dir/input.c
私はあなたが(自動交換)何をしたい、archieveする方法を、知りませんが、私はあなたがこのようないくつかのbashでそれを行うことができますね。(私は、スクリプトでテストされていない貧困層だと間違っている可能性があります)。
i = "a/path/to/a/file.c" cc -o ${i%.c} $i
これは、同じディレクトリ内の出力ファイルにIで指定されたが、.C-接尾辞を除去したファイルをコンパイルする必要があります。