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

Does MinGW create object files when compiling multisource program files?

本文关键字:文件 创建 是否 目标 MinGW 源程序 编译      更新时间:2023-10-16

我听说在Linux上用gcc编译多源文件时,gcc会创建目标文件*。因此,当您只更改一个源代码文件时,不需要重新编译所有文件。我在Win7 x64上使用MinGW, MinGW不创建任何对象文件。

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我只得到program.exe,没有任何。obj文件。

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

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

编辑

更正了一个错别字。路径应该是%TEMP%而不是PATH

在这方面,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