1. GCC编译器的使用 g++生成可执行文件 编译参数的解析

本文详细介绍了C++在Linux环境下使用GCC编译器的全过程,包括预处理、编译、汇编和链接步骤,以及关键的编译参数、头文件、库文件使用、调试信息和优化技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

C++ Linux开发

GCC编译器

1.1 cpp编辑过程

  1. 预处理 Pre-Processing

宏替换,注释消除,查找相关库文件等

g++ -E test.cpp -o test.i
  1. 编译 Compling

将预处理后的文件转换成汇编语言,生成.s汇编文件

g++ -S test.i -o test.s
  1. 汇编 Assemnbling

将汇编文件转换为目标文件(机器代码),即.o文件

g++ -c test.s -o test.o
  1. 链接 Linking

链接相关目标文件或动静态库等,生成可执行文件

g++ test.o -o test

1.2 编译参数

  1. -o 指定输出文件名字, 不指定则输出为a.out
#指定文件名字为 myapp
g++ test.cpp -o myapp
  1. -g 编译带调试信息的可执行文件
g++ -g test.cpp -o test
  1. -O[n] 优化源代码,提高可执行文件的执行效率
g++ test.cpp -O2 -o test
  1. -I 指定头文件的搜索目录
g++ -I/My-Include-Floder/test test.cpp -o test
  1. -Wall 打印警告信息
g++ -Wall test.cpp -o test
  1. -w 关闭警告信息
g++ -w test.cpp -o test
  1. -std=c++11 设置编译标准
g++ -std=C++11 test.cpp -o test

  1. -l 指定库文件 -L 指定库文件路径
# -l 用来指定程序需要链接的库,-l参数后紧跟着的就是库名
# 在 /lib 和 /usr/lib 和 /usr/local/lib 中的库直接使用-l参数就可以连接到

# 如链接glog库
g++ -lglog test.cpp -o test

# 若库文件没有在上述三个目录,则需要使用-L指定路径
# 链接/home/mypyth 下的 glog 库,如下所示
g++ -L/home/mypath -lglog test.cpp -o test
  1. -D 定义宏
//使用场景, 以下是一段程序
#include<iostream>
using namespace std;
int main()
{
#ifdef MYDEBUG
  cout<<"我被执行啦!";
#endif
  cout<<"Hello C++"<<endl;
  return 0;                                                                   
}
#使用如下命令,输出结果为: 我被执行啦!Hello C++
g++ -DMYDEBUG test.cpp -o test
./test

#使用如下命令,输出结果为: Hello C++
g++ test.cpp -o test
./test
  1. 查看gcc帮助手册
man gcc
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值