首页 > 解决方案 > 构建可执行文件时,使用 MinGW 的静态库无法正确更新

问题描述

我做了一个小makefile来构建一个由几个目标文件组成的静态库。然后我制作了一个测试程序 test.exe 并使用相同的 makefile 构建了它。可执行文件由 test.c 和要测试的静态库组成。

当我更改其中一个 .c 源文件中的一个函数时,makefile 会识别更改并重建 .o 文件,然后是 .a 存档文件,最后是测试可执行文件。所有文件都被修改,因为操作系统时间属性在我运行 makefile 时发生了变化。

但是现在当我运行 test.exe 时,我从输出中看到我修改的函数仍然是旧版本。我可以通过更改 printf 格式字符串并注意到屏幕输出仍然与旧格式相同来看到它。如果我从磁盘硬删除 lib.a(即把它移到回收站),然后我再次运行 makefile,现在 test.exe 具有更改功能的正确版本。

为什么?是否在某处创建缓存并使用它?我该如何解决这个烦人的事情?

环境是:

标签: cmingwstatic-librariesunix-ar

解决方案


推荐阅读