なんとな~くしあわせ?の日記

「そしてそれゆえ、知識そのものが力である」 (Nam et ipsa scientia potestas est.) 〜 フランシス・ベーコン

Bad file number?

mingwで簡単なスクリプトをmakeしようとしたら こんなのが出てコンパイルできない。

$ make spacechange
cc spacechange.c -o spacechange
make: execvp: cc: Bad file number
make: *** [spacechange] Error 127

しかし海外フォーラムを見てたら「-tml」オプションを付けたら行けるよーと書かれていて、そのとおりにやったらたしかにコンパイルできた。一応その人が説明もしてる感じなので時間があればもっと調べたい。

2011/09/08追記:
こんなコードがコンパイルできないのは当然のことである。上の例ではオブジェクトファイルのみ生成して実行ファイルができていないのだ。
gccで単純にコンパイルを行うとすれば以下のようにするのが普通。

$ gcc helloworld.c → a.exeが生成される・実行可能
$ gcc -c helloworld.c -o helloworld.o → オブジェクトファイル、helloworld.oができる。実行すると「Bad file number」
$ gcc helloworld.o -o helloworld.exe → 実行可能なhelloworld.exeができる