1

听说在 Linux 上用 gcc 编译多源文件时,gcc 会为每个源代码文件创建目标文件 *.o,所以只更改一个文件时不需要重新编译所有文件。我在 Win7 x64 上使用 MinGW,而 MinGW 不创建任何目标文件。

主程序

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

来源.c

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

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

头文件.h

//header.h
#ifndef HEADER_H
#define HEADER_H

#include <stdio.h>

void Message(void);

#endif

如果我将这些文件放在桌面上并使用命令编译:gcc main.c source.c -o program 我只会得到 program.exe,而不是任何 .obj 文件。

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 回答