-std = c ++ 2a在链接阶段也是必需的吗?

问题描述 投票:1回答:1

如果我使用特定的语言标准,分两个阶段进行编译:

g++ -std=c++2a -c file1.cpp                   #compile source files 
g++ -std=c++2a -c file2.cpp
g++ -std=c++2a file1.o file2.o -o program     #link 'em

...我可以将-std=c++2a留在链接命令之外,还是有时需要?

g++
1个回答
0
投票

我想您正在使用recent GCC在Linux上进行编译。请务必阅读更多about C++和有关您的特定编译器的信息。

实践中,您要编译with警告和调试信息,请使用

g++ -std=c++2a -Wall -Wextra -g -c file1.cpp

[对于file2.cpp同样如此

稍后(一旦您的程序足够正确,例如,几乎没有错误),您可能希望让编译器将其optimize。所以你可以使用

 g++ -std=c++2a -Wall -Wextra -O3 -g -c file1.cpp

实际上,您将配置build automation工具(例如GNU makeninja)以运行编译命令。

罕见情况下,您可能希望使用链接时间优化。然后您需要同时使用g++ -std=c++2a -Wall -Wextra -O2 -g -flto compilelink

© www.soinside.com 2019 - 2024. All rights reserved.