知らないあいだに実行ファイルの名前に拡張子 .exe が付いている。
たとえば hello.c というファイルをコンパイルして実行ファイル hello を作りたいから
gcc -o hello hello.c
とすると、できるのは hello ではなくて hello.exe なんです‥。
別にいいけど。
‥と思ってたけど。困ることもある。
makefileでcleanの処理書くとき困る。
例えばこんなmakefile。
default: hello
clean:
rm -f hello
hello: hello.c
gcc -o hello hello.c
Linuxなら完璧に動くけど、
Cygwinだと make したときに hello.exe が作られるけど、
make clean しても hello.exe が消えない。
困ったねえ。
でも考えるの面倒だから、rm のあたりに追加しちゃえ。
clean:
rm -f hello hello.exe
これでLinuxでもCygwinでも動くでしょ。
でも、これでいいの? ほんとにこんなやりかたでいいの?!
何か気持ち悪い‥。
Cygwinのgccが変なことするからといって、
GNU Makeにしわよせするなんて。
かといって、こんなことのために環境を判断して分岐するのも‥むぅ。
ところで、.exe は必要なものなのかどうか。
試しに
mv hello.exe hello
./hello
としてみよぅ。ちゃんと動くから‥。
なんでCygwinのgccは .exe 付けるんだろうねえ。まぎらわしい。
といっても、Cygwinのシェルじゃなくて、Explorerから直接ダブルクリックしたら
.exe 付いてないと実行しないんだろうなぁ。その利便のためか‥。
なんかごちゃごちゃしてる。
gccはCygwinのシェル上で使うのに
生成されるものだけExplorerを意識するなんて‥。
にゃ、もしやCygwinのシェルではなく
コマンドプロンプトから呼び出すことを考えてる?
こういうのはたいてい、何かの歴史的事情なんでしょぅ。
忘れたい、忘れたい、忘れたい‥。
でもときどき遭遇する。逃げ切れない。
0 件のコメント:
コメントを投稿