gpt4 book ai didi

c++ - 用于删除调试信息的 MSVC 命令行选项

转载 作者:行者123 更新时间:2023-12-01 14:25:16 30 4
gpt4 key购买 nike

我在名为“hw.cpp”的文件中有以下简单的 C++ 程序:

#include <stdio.h>
int main(int argc, char* args[])
{
printf("Hello, world!\n");
return 0;
}

使用 gcc 9.3.0 (Ubuntu) 编译,得到以下结果:
  • gcc -g0 hw.cpp -o hw.out(禁用调试信息)=> 大小为 17k(如果 -g0 被删除,则相同)
  • gcc -g3 hw.cpp -o hw.out(最大调试信息)=> 大小为 44k

  • 但是 MSVC 的默认编译(cl 版本 19.26.28806)输出一个更大的文件:
  • cl hw.cpp/link/out:hw.exe => 大小为 101k

  • 为什么MSVC版本这么大?这与调试信息有关吗?如何禁用调试信息? cl.exe compiler options没有明显的 gcc 等效项 -gN选项。

    最佳答案

    这些是 hw.exe我看到的 C 运行时的静态/动态链接与调试/发布版本的组合的大小,用于您的 hw.cpp 的默认 32b 编译使用 VC++ 2019。

                       debug                 release
    static (cl /MTd) 279,040 (cl /MT) 101,888
    dynamic (cl /MDd) 10,240 (cl /MD) 8,192

    32b 发布版本 cl /MD hw.cpp动态链接到 VCRUNTIME140.DLL 的运行时有 8k。规模大跃进 /MT来自静态链接核心 C 支持、流库等。

    关于c++ - 用于删除调试信息的 MSVC 命令行选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62387004/

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