在命令行如何编译cpp

在命令行编译并运行C++程序,你需要一个C++编译器。最常见的编译器有GCC(GNU Compiler Collection)和Clang。如果你使用的是Windows,你还可以使用Microsoft的Visual C++编译器。

以下是在不同操作系统上使用命令行编译并运行C++程序的基本步骤:

对于GCC或Clang(Linux/macOS):

  1. 打开终端。

  2. 使用g++(GCC)或clang++(Clang)命令加上你的源文件名来编译代码。例如,如果你的文件名是main.cpp,你可以使用以下命令之一来编译它:

    • 使用GCC:
      g++ -o myprogram main.cpp
      
    • 使用Clang:
      clang++ -o myprogram main.cpp
      

    这里-o myprogram指定了输出的可执行文件的名称。

  3. 编译成功后,运行生成的可执行文件:

    ./myprogram
    

对于Microsoft Visual C++(Windows):

  1. 打开命令提示符或者PowerShell。

  2. 如果你安装了Visual Studio,你需要设置环境变量以使用cl命令。通常可以通过运行Visual Studio的命令提示符来实现,这个命令提示符会预先配置好相关环境。

  3. 使用cl命令来编译你的源文件:

    cl /EHsc main.cpp
    

    /EHsc选项是用于指定异常处理模型的。

  4. 编译完成后,它会生成main.exe(假设你的源文件名为main.cpp)。在命令行中运行它:

    main
    

请确保在尝试编译之前已经将C++编译器安装好,并且其路径已添加到系统的环境变量中,这样你才能在任意位置调用编译器命令。如果编译过程中出现错误,请根据命令行中给出的错误信息进行相应的调整。

报错

error This file requires compiler and library support for the ISO C++ 2011 standard

解决:

$ g++ test1.cpp -std=c++11
// test1.cpp

#include 
#include 

int main() {
    // 获取当前时间点
    std::chrono::time_point<std::chrono::system_clock> now = std::chrono::system_clock::now();

    // 转换为自 epoch 以来的时间长度
    auto duration = now.time_since_epoch();

    // 将 duration 转换为秒
    long long seconds = std::chrono::duration_cast<std::chrono::seconds>(duration).count();

    std::cout << "Current timestamp (seconds since epoch): " << seconds << std::endl;

    return 0;
}

其他C++标准

g++ -std=c++98 test_std.cpp
g++ -std=c++03 test_std.cpp
g++ -std=c++11 test_std.cpp
g++ -std=c++14 test_std.cpp
g++ -std=c++17 test_std.cpp
g++ -std=c++2a test_std.cpp 

在make的是否指定C++标准

在Makefile中指定C++标准,你需要设置编译器的选项来包含 -std=c++XX 标志,其中 XX 是你想要使用的C++标准的年份,比如 c++11c++14c++17 等。

下面是一个简单的Makefile示例,它指定了C++标准为C++11:

CXX=g++
CXXFLAGS=-std=c++11 -Wall

all: myprogram

myprogram: main.o
	$(CXX) $(CXXFLAGS) -o myprogram main.o

main.o: main.cpp
	$(CXX) $(CXXFLAGS) -c main.cpp

clean:
	rm -f *.o myprogram

在这个Makefile中,变量 CXX 用于指定C++编译器,通常是 g++ 或者 clang++CXXFLAGS 是传递给编译器的选项,我们在这里加入了 -std=c++11 来指定使用C++11标准,还有 -Wall 选项用于打开大多数编译警告。

当你运行 make 命令时,Makefile中定义的规则将会被执行,编译器将使用指定的C++标准来编译程序。

如果你需要根据不同情况选择不同的C++标准,你可以通过命令行传递参数来覆盖 CXXFLAGS 的值,例如:

make CXXFLAGS="-std=c++14 -Wall"

这样就会使用C++14标准来编译你的程序。记住,每次改变编译选项时最好先运行 make clean 清除旧的对象文件,然后再运行 make 来重新编译程序,以确保所有文件都是用新选项编译的。

你可能感兴趣的:(c++)