MinGW在编译多源程序文件时是否创建目标文件?

时间:2013-03-23 13:06:51

标签: c++ c mingw

我听说在Linux上使用gcc编译多源文件时,gcc会为每个源代码文件创建目标文件* .o,因此当您只更改一个文件时,不需要重新编译所有文件。我在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

如果我将这些文件放在桌面上并使用命令编译:{{1​​}} 我只获得program.exe,而不是任何.obj文件。

2 个答案:

答案 0 :(得分:2)

是的,MinGW会保存临时文件。临时文件的路径将等于计算机中的%TEMP%变量。您还可以通过此命令查看临时文件

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

修改

更正了一个拼写错误。路径为%TEMP%而不是PATH

答案 1 :(得分: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