默认情况下将一些标志添加到gcc(最好使用specs文件)

Kan*_* Li 6 gcc g++

我想让我gcc总是默认添加一些标志,有没有一个干净的方法来做到这一点?

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

有几种解决方法,但它们很难看:

  1. alias g++=...,但我不喜欢这种方法;
  2. 编写一个包含g ++的脚本,类似于1;
  3. ...

我宁愿只修改specs文件,以便一切都是无缝的.

Bar*_*uch 9

运行strace gcc | grep specs以查看它在哪里搜索specs文件,然后去那里运行gcc -dumpspecs > specs.您现在已准备好要编辑的specs文件.使用此参考:https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

  • 你需要在'|'之前添加2>&1,因为strace输出到stderr.我在我的VM上测试了这个想法,在strace输出建议的位置添加了一个修改后的specs文件,然后在虚拟cpp上运行g ++ -v,观察预期的选项. (3认同)

Jon*_*ler 1

修改specs文件的麻烦在于,你一旦改变了对某些选项的想法,你就无法从命令行取消它;你必须去修改specs文件。您还必须记住在升级编译器时重新修改新的specs文件。

另外,您多久从命令行运行编译器一次?我知道我唯一直接这样做的时候是当我需要临时破解命令行并且我懒得去解决如何修复 makefile 中的编译器选项时,所以我从make 的输出,然后运行编译器。一个问题alias是它无法在makefile. 因此,对我来说,问题会减少到确保每个 makefile 中都使用编译器选项。

  • 除了从命令行调用之外,还有合法的用例。您可能想告诉 GCC 驱动程序在哪里可以找到替代的 libc,例如......或替代标头。或者添加“默认”标题。 (2认同)