我在 Ubuntu 12.04 上使用 g++ 4.7 来编译我的 c++ 代码,除非在我的命令中添加 -std=gnu++11 选项,否则它将不会被编译,如下所示:
g++ -std=gnu++11 main.cpp
有没有办法将此选项永久添加到编译器,因为我的文本编辑器使用 g++ 自动编译我的代码,并且它不起作用,因为我必须添加此选项,而我无法像通常在终端内那样添加它?
我看到人们使用一些 spec 文件来配置 g++,但我不明白如何去做,所以我将非常感谢你们的帮助。
答案1
我只需创建一个~/bin/g++
包含以下行的shell 脚本
#!/bin/sh
exec /usr/bin/g++ -std=gnu++11 "$@"
并确保~/bin
在 上PATH
,并列在任何其他包含g++
可执行文件的目录(通常是/usr/bin
)之前。编辑规范文件是可能的,但要让您的设置成为默认设置,我相信您必须更改默认规范,这意味着它需要 root 访问权限和对 gcc 内部进行大量修改。很有可能在下一次 g++ 升级时,这种修改会被取消。
答案2
如果您正在运行 Windows 10 并且想要使用g++ -std=c++17 <filename>
默认 C++17 标准编译 C++ 文件,您可以简单地创建一个 bash(shell)脚本并将其命名run.sh
。
run.sh
@MvG 建议的文件内容:
#!/bin/sh
exec g++ -std=gnu++17 "$@"
现在在命令行中输入
./run.sh <filename>
它应该被编译:)
注意:您可能必须在 Windows 中安装 git(bash)并将其添加到 PATH(这可以通过在系统环境变量中已安装的 git 文件夹中添加 bin 文件夹的路径轻松完成)。