编译C++程序

单文件编译

C++程序Test.cpp:

#include 
using namespace std;
int main()
{
    cout << "Hello, world!" << endl;
    return 0;
}

使用gcc编译;

$ gcc Test.cpp -lstdc++ -o main

使用g++编译:

$ g++ Test.cpp -o main

运行:

./main

多文件编译

主程序main.cpp:

#include 
#include "Hello.h"

int main() {
    std::cout << "Hello, World!" << std::endl;
    Hello *hi = new Hello();
    hi->hello();
    return 0;
}

Hello.h:

#ifndef CPP_HELLO_H
#define CPP_HELLO_H

class Hello {
public:
    void hello();
};
#endif //CPP_HELLO_H

Hello.cpp:

#include "Hello.h"
#include 
using namespace std;
void Hello::hello() {
    cout<<"hello"<<endl;
}

使用gcc编译:

$ gcc main.cpp Hello.cpp -lstdc++ -o main

使用g++编译:

$ g++ main.cpp Hello.cpp -o main

运行:

./main

g++ 常用命令选项

选项 描述
-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。
-c 只编译并生成.o目标文件
-E 只运行 C 预编译器。
-g 生成调试信息。GNU 调试器可利用该信息。
-o FILE 生成指定的输出文件。用在生成可执行文件时。
-O0 不进行优化处理。
-O 或 -O1 优化生成代码。
-O2 进一步优化
-O3 比 -O2 更进一步优化,包括 inline 函数。
-shared 生成共享目标文件。通常用在建立共享库时。
-static 禁止使用共享连接
-w 不生成任何警告信息
-Wall 生成所有警告信息

谢谢阅读

你可能感兴趣的:(C/C++,编译)