gpt4 book ai didi

将c源代码编译成obj文件

转载 作者:太空宇宙 更新时间:2023-11-04 05:00:51 27 4
gpt4 key购买 nike

我有一个关于将c源文件编译成obj文件的问题。情况是:我从供应商处获得了一些源代码,一些来自供应商的库以及一些来自供应商的 obj 文件。

makefile也是由供应商提供的,它使用以下方式定义源:

${BUILD_LIB}_FILES += a.c \
b.c \
c.c

这三个c文件要先编译成obj文件,再生成lib文件。但是,vendor 并没有给我发布c.c 文件,它只提供了c.o 给我,也就是说,我会先编译a.cb.c 成obj 文件,和c.o 一起使用生成lib 文件,但是makefile 怎么实现呢?

混淆点在makefile中,它已经列出c.c应该在编译过程中(它将c.c添加到变量${BUILD_LIB}_FILES中),但是如果 make 可以找到预构建的 c.o,它不会编译 c.c(这意味着对于我的情况,无论有什么 c.c 或不,它编译成功),为什么?据我了解,gcc 应该编译该变量中已列出的所有源文件。

最佳答案

make 的一个特点是它不会重新构建已经构建的代码。在您的情况下,不会编译 C 源代码文件,因为这些文件的目标文件已经存在。 make 看到它需要构建 a.c、b.c 和 c.c,并寻找 a.o、b.o 和 c.o。由于供应商提供了那些 a.o、b.o 和 c.o,它不会尝试编译 a.c、b.c 和 c.c,因为它认为它们已经被编译过。

此功能旨在减少仅更改几个文件时重新编译大型项目所需的时间。非常大的项目可能需要几分钟、几小时或几天的时间来编译,因此这些节省会很大。

关于将c源代码编译成obj文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20422386/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com