默认情况下,向gcc添加一些标志(最好使用规范文件)

默认情况下,向gcc添加一些标志(最好使用规范文件),gcc,g++,Gcc,G++,我想让我的gcc在默认情况下总是添加一些标志,有没有干净的方法可以做到这一点 基本上,每次调用gcc,我都会传递一些标志,例如(但不限于)-g(这样它就有调试信息) 有几种变通方法,但它们都很难看: 别名g++=…,但我不喜欢这种方法 编写一个围绕g++的脚本,类似于1 我更喜欢修改specs文件,这样一切都是无缝的。修改specs文件的问题是,如果您对某个选项改变了主意,就不能从命令行取消它;你必须去修改规格文件。升级编译器时,还必须记住重新修改新的规范文件 另外,您多久从命令行运行一次编译

我想让我的
gcc
在默认情况下总是添加一些标志,有没有干净的方法可以做到这一点

基本上,每次调用
gcc
,我都会传递一些标志,例如(但不限于)
-g
(这样它就有调试信息)

有几种变通方法,但它们都很难看:

  • 别名g++=…
    ,但我不喜欢这种方法
  • 编写一个围绕g++的脚本,类似于1

  • 我更喜欢修改specs文件,这样一切都是无缝的。

    修改specs文件的问题是,如果您对某个选项改变了主意,就不能从命令行取消它;你必须去修改规格文件。升级编译器时,还必须记住重新修改新的规范文件


    另外,您多久从命令行运行一次编译器?我知道,我几乎唯一一次直接这么做是在我需要临时破解命令行时,我无法费心解决如何修复makefile中的编译器选项,所以我从make的输出复制编译行,然后运行编译器。
    alias
    的一个问题是它不能在
    makefile
    中工作。因此,对我来说,问题将归结为确保编译器选项在每个makefile中使用。

    运行
    strace gcc | grep specs
    查看它在哪里搜索specs文件,然后运行
    gcc-dumpspecs>specs
    。现在,可以编辑一个等级库文件了。使用此引用:

    您需要在“|”之前添加2>&1,因为strace输出到stderr。我在虚拟机上测试了这个想法,在strace输出建议的位置添加了一个修改过的specs文件,然后在一个虚拟cpp上运行g++-v,观察预期的选项。你能给我们举个例子吗?如何添加一个默认的链接器选项,它一直在那里?还是C++编译器选项,还是C编译器选项?这个规格文件在第一次查看时相当复杂。使用大量的%s和{},您能演示一个例子,如何向链接器、C编译器或C++编译器中添加默认选项?@ GravISGCC读取SPEC文件(如果存在),并使用其中的值来重写默认(内置)规范文件。通过转储整个默认等级库文件并对其进行编辑,可以有效地覆盖整个内置等级库文件。@baruch您应该将其放在答案中,并将链接更新为非版本特定的。除了从命令行调用它之外,还有合法的使用情况。您可能想教GCC驱动程序在哪里找到替代的libc,例如。。。或其他标题。或添加“默认”标题。