如果我使用特定的语言标准,分两个阶段进行编译:
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
留在链接命令之外,还是有时需要?
我想您正在使用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 make或ninja)以运行编译命令。
在罕见情况下,您可能希望使用链接时间优化。然后您需要同时使用g++ -std=c++2a -Wall -Wextra -O2 -g -flto
compile和link