1

Linux で gcc を使用してマルチソース ファイルをコンパイルすると、gcc はすべてのソース コード ファイルに対してオブジェクト ファイル *.o を作成するため、1 つだけ変更する場合はすべてのファイルを再コンパイルする必要はないと聞いています。Win7 x64 で MinGW を使用していますが、MinGW はオブジェクト ファイルを作成しません。

main.c

//main.c
#include "header.h"
int main(void)
{
    Message();
    return 0;
}

source.c

//source.c
#include <stdio.h>
#include "header.h"

void Message()
{
    printf("Hello World...\n");
}

header.h

//header.h
#ifndef HEADER_H
#define HEADER_H

#include <stdio.h>

void Message(void);

#endif

これらのファイルをデスクトップに配置し、コマンドでコンパイルするとgcc main.c source.c -o program 、.obj ファイルではなく、program.exe のみが取得されます。

4

2 に答える 2

3

はい、MinGW一時ファイルを保存します。%TEMP%一時ファイルのパスは、マシンの変数と同じになります。このコマンドを使用して一時ファイルを表示することもできます

gcc -o example.out source.c main.c --save-temps

編集

誤字を一つ修正。パスはあり、そうで%TEMP%はありませんPATH

于 2013-03-23T13:09:33.087 に答える
0

この点で、GCCの動作はLinuxでもWindows上のMinGWと同じです。

後でリンクするためのオブジェクトファイルを生成するようにgccに具体的に指示できます。

gcc -c main.c source.c          # compile to object files
gcc -o program main.o source.o  # link the object files and produce an executable
于 2013-03-23T23:49:09.973 に答える