【linux】编译c++程序指令

gcc xxxx.cpp -lstdc++

Linux 下使用 C++ 编译程序通常使用 `g++` 或 `clang++` 编译器,以下是常见的编译指令和用法: ### 基本编译指令 1. **编译单个源文件并生成可执行文件**: ```bash g++ main.cpp -o main ``` - `main.cpp` 是源代码文件。 - `-o main` 指定输出文件名为 `main`(可执行文件)。 2. **编译多个源文件**: ```bash g++ file1.cpp file2.cpp -o program ``` 3. **仅编译不链接(生成目标文件 `.o`)**: ```bash g++ -c main.cpp ``` - 生成 `main.o` 目标文件,可用于后续链接。 4. **链接多个目标文件**: ```bash g++ main.o utils.o -o program ``` ### 常用编译选项 - `-std=c++11`(或 `c++14`、`c++17`、`c++20`):指定 C++ 标准版本。 ```bash g++ -std=c++17 main.cpp -o main ``` - `-Wall`:启用所有警告信息。 ```bash g++ -Wall main.cpp -o main ``` - `-O2`:启用优化(提高运行效率)。 ```bash g++ -O2 main.cpp -o main ``` - `-g`:生成调试信息(用于 `gdb` 调试)。 ```bash g++ -g main.cpp -o main ``` - `-I<dir>`:指定头文件搜索路径。 ```bash g++ -I./include main.cpp -o main ``` - `-L<dir>`:指定库文件搜索路径。 ```bash g++ -L./lib main.cpp -lmylib -o main ``` - `-l<name>`:链接动态库(如 `-lpthread` 链接线程库)。 ```bash g++ main.cpp -lpthread -o main ``` ### 静态库和动态库编译 1. **生成静态库(`.a` 文件)**: ```bash g++ -c mylib.cpp -o mylib.o ar rcs libmylib.a mylib.o ``` - `ar rcs` 用于创建静态库。 2. **生成动态库(`.so` 文件)**: ```bash g++ -shared -fPIC mylib.cpp -o libmylib.so ``` - `-shared` 表示生成动态库。 - `-fPIC` 用于生成位置无关代码(动态库必需)。 3. **使用静态库或动态库**: ```bash g++ main.cpp -L. -lmylib -o main ``` - `-L.` 表示在当前目录查找库文件。 - `-lmylib` 表示链接 `libmylib.a` 或 `libmylib.so`。 ### 示例 1. 编译 C++17 程序并启用优化和警告: ```bash g++ -std=c++17 -O2 -Wall main.cpp -o main ``` 2. 编译并链接自定义库: ```bash g++ -c mylib.cpp -o mylib.o ar rcs libmylib.a mylib.o g++ main.cpp -L. -lmylib -o main ``` 3. 生成动态库并使用: ```bash g++ -shared -fPIC mylib.cpp -o libmylib.so g++ main.cpp -L. -lmylib -o main export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH # 临时设置库路径 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值