防止临时对象文件在 MSVC 中撞击磁盘

Posted

技术标签:

【中文标题】防止临时对象文件在 MSVC 中撞击磁盘【英文标题】:Prevent temporary object files hitting disk in MSVC 【发布时间】:2020-06-15 11:27:14 【问题描述】:

假设我有一个名为 test.cpp 的 CPP 文件。在使用 gcc 9.3.0 的 Ubuntu 上,我可以使用以下命令:

gcc -c test.cpp(创建目标文件test.o) gcc test.o -o test.out(从目标文件test.o创建可执行文件test.out) gcc test.cpp -o test.out(只创建最终的可执行文件test.out

最后一个选项很好,因为编译后没有中间目标文件。 (我不确定 gcc 是否在内存中执行所有操作,或者目标文件是否在链接期间被清理之前暂时撞击磁盘)。

在 Windows 上,cl test.cpp /link /out:test.exe 创建可执行文件 test.exe,还创建目标文件 test.obj

有没有办法阻止 MSVC 创建中间对象文件?或者,是否有请求 MSVC 清理的链接选项?

【问题讨论】:

【参考方案1】:

没有。最好的办法是使用/Fo flag 将.obj 文件转储到%TMPDIR% 左右。

不要对大型构建执行此操作,因为 foo/Bar.cppqux/Bar.cpp 将映射到 Bar.obj 并给您带来非常有趣的编译/链接错误。

【讨论】:

以上是关于防止临时对象文件在 MSVC 中撞击磁盘的主要内容,如果未能解决你的问题,请参考以下文章

Python3标准库:tempfile临时文件系统对象

分配一个指向临时对象的指针——如何防止它?

磁盘配额

如何防止 Selenium 3.0 (Geckodriver) 创建临时 Firefox 配置文件?

iOS:如何防止临时文件可见性

在Linux上创建磁盘配额