【问题标题】:GCC Optimization FlagsGCC 优化标志
【发布时间】:2013-12-08 23:05:49
【问题描述】:

我正在尝试将一堆具有不同优化的可执行文件放在一起。我唯一的问题是,带有 -c 的 gcc 命令也应该能够使用 -O 标志吗? 我问这个,因为我意识到当我只在 gcc 命令中放置优化标志来制作 exe 时,文件之间的大小根本没有区别,这似乎不正确。

例如,我有这样的事情:

g++ -c cat.cpp 
g++ -c dog.cpp        
g++ cat.o dog.o -o catdog

我会在这样的所有东西上使用标志吗:

g++ -c -O2 sobol.cpp
g++ -c -O2 sobol_prb.cpp        
g++ sobol.o sobol_prb.o -O2 -o catdog02

如果有人可以帮助我,我将不胜感激。

谢谢。

【问题讨论】:

    标签: gcc flags compiler-flags


    【解决方案1】:

    你可以这样做:

      g++ sobol.cpp sobol_prb.cpp -O2 -o catdog02
    

    如果你需要编译超过 2 或 3 个文件,你应该考虑 Makefile。

    如果您正在处理一个重要的项目,您应该开始考虑 @polkadotcadaver 建议的构建系统,尽管我会选择 automake 或 cmake,因为它们比其他构建系统更受欢迎。

    【讨论】:

      【解决方案2】:

      是的,在每个对象编译时使用优化标志。

      (一般来说,使用像 SCons 这样的构建系统可以让这种事情变得更容易,即使它是一个“小”项目。)

      【讨论】:

        【解决方案3】:

        当您对对象 (.o) 文件执行 gcc 时,这基本上只是调用链接器并选择适当的库等等。在通常模式下,此步骤不涉及编译,优化标志将不起作用。

        优化发生在编译步骤(带有 .cpp 输入的那个),这就是优化开关的相关之处。

        链接时间优化 (-flto) 有点不同,在编译和链接时需要使用优化开关。

        【讨论】:

          猜你喜欢
          • 2011-07-30
          • 1970-01-01
          • 1970-01-01
          • 2023-03-30
          • 2010-10-30
          • 1970-01-01
          • 2013-05-09
          • 1970-01-01
          • 2020-04-02
          相关资源
          最近更新 更多