我听说在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文件。
答案 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