编译 Linux 下的 C++ 项目通常有多种方式,从最简单的 g++ 命令到使用构建工具(Make、CMake、Meson 等)。下面按由浅入深的方式说明。
// hello.cpp
#include <iostream>
int main() {
std::cout << "Hello Linux" << std::endl;
}
编译:
g++ hello.cpp -o hello
运行:
./hello
g++ main.cpp func.cpp -o app
常用编译选项:
g++ -std=c++17 -O2 -Wall -Wextra main.cpp -o app
说明:
-std=c++17:C++ 标准-O2:优化-Wall -Wextra:警告project/
├── main.cpp
├── calc.cpp
├── calc.h
└── Makefile
CXX = g++
CXXFLAGS = -std=c++17 -O2 -Wall
app: main.o calc.o
$(CXX) main.o calc.o -o app
main.o: main.cpp calc.h
$(CXX) $(CXXFLAGS) -c main.cpp
calc.o: calc.cpp calc.h
$(CXX) $(CXXFLAGS) -c calc.cpp
clean:
rm -f *.o app
make
./app
make clean
project/
├── CMakeLists.txt
├── main.cpp
└── calc.cpp
cmake_minimum_required(VERSION 3.10)
project(MyApp)
set(CMAKE_CXX_STANDARD 17)
add_executable(app
main.cpp
calc.cpp
)
mkdir build
cd build
cmake ..
make
./app
g++ main.cpp -pthread -o app
find_package(Threads REQUIRED)
target_link_libraries(app Threads::Threads)
g++ -g main.cpp -o app
gdb ./app
ldd app
g++ -Wall -Wextra -pedantic main.cpp
| 工具 | 用途 |
|---|---|
| g++ / clang++ | 编译器 |
| make | 构建工具 |
| cmake | 跨平台构建 |
| ninja | 快速构建 |
| gdb | 调试 |
| valgrind | 内存检测 |
g++MakefileCMake(工业级项目主流)如果你有:
可以告诉我,我可以给你定制的编译方案。