2

私は C とプログラミングにかなり慣れていないので、皆さんが少し辛抱してくれることを願っています。ただし、私は自分の問題をできるだけ正確に説明しようとしています。Windows 7 コンピューターで mingw32 を使用していますが、'make' について学びました。いくつかのソース コード ファイルと Makefile を作成しました。私が望むのは、Makefile が私のソース コードの int オブジェクト コードをコンパイルし、それを 1 つの実行可能ファイルにリンクすることです (プロにとっては、これは大したことではないと思います)。

だからここに私のコードがあります:

first.c:

#include<stdio.h>
#include"second.h"
int main()
{
float x = 12.0;
printf("Result is: %.2f\n",go_to_the_other(x));
return 0;
}

秒.h

float go_to_the_other(float f);

セカンド.c

float go_to_the_other(float f)
{
float calc = f + 10;
return calc;
}

Makefile は次のとおりです (はい、タブのみを使用しました)。

second.o: second.c second.h
        gcc   -c   second.c
first.o:    first.c
        gcc   -c   first.c
first:   first.o  second.o
        gcc first.o second.o  -o first

これは簡単な例ですが、私の問題をほぼ説明しています。すべてのファイルが同じディレクトリにあり、コマンド ラインを使用します。

mingw32-make first

しかし、ファイルをコンパイルする代わりに、次のメッセージしか表示されません。

cc  first.c -o first
process_begin: CreateProcess(NULL, cc first.c -o first, ...) failed
make (e=2): The system cannot find the file specified.
<builtin>: recipe for target 'first' failed
mingw32-make: ***[first] Error 2

おそらく本当にばかげていると思いますが、何が間違っているのかわかりません。これについて何か助けていただければ幸いです。よろしくお願いします。

4

1 に答える 1

1

それで私はそれを試してみました... Win7マシン上のMinGW-4.7.1で動作します....環境変数などを取得するようにするかどうか疑問に思っています。

make と gcc のバージョンが期待どおりであることを確認してみてください

mingw32-make -v gcc -v mingw32-gcc -v

また、このメイクファイルを試して、何が起こるか見てください。

CC = mingw32-gcc

second.o: second.c second.h
    $(CC)   -c   second.c
first.o:    first.c
    $(CC)   -c   first.c
first:   first.o  second.o
    $(CC) first.o second.o  -o first

スペースをタブに変換することに注意してください。

そして経由でコンパイル

mingw32-make SHELL=cmd.exe 最初に

何が起こるか見てください。

于 2013-09-17T01:29:55.247 に答える