g++ 的应用

简介: g++ 的应用

g++ 应用说明


程序 g++ 是将 gcc 默认语言设为 C++ 的一个特殊的版本,链接时它自动使用 C++ 标准库而不用 C 标准库。通过遵循源码的命名规范并指定对应库的名字,用 gcc 来编译链接 C++ 程序是可行的,如下例所示:

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

下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码:

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

最简单的编译方式:

$ g++ helloworld.cpp

由于命令行中未指定可执行程序的文件名,编译器采用默认的 a.out。程序可以这样来运行:

$ ./a.outHello, world!

通常我们使用 -o 选项指定可执行程序的文件名,以下实例生成一个 helloworld 的可执行文件:

$ g++ helloworld.cpp -o helloworld

执行 helloworld:

$ ./helloworldHello, world!

如果是多个 C++ 代码文件,如 runoob1.cpp、runoob2.cpp,编译命令如下:

$ g++ runoob1.cpp runoob2.cpp -o runoob

生成一个 runoob 可执行文件。

g++ 有些系统默认是使用 C++98,我们可以指定使用 C++11 来编译 main.cpp 文件:

g++ -g -Wall -std=c++11 main.cpp


g++ 常用命令选项


选项

解释

-ansi

只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色, 例如 asm 或 typeof 关键词。

-c

只编译并生成目标文件。

-DMACRO

以字符串"1"定义 MACRO 宏。

-DMACRO=DEFN

以字符串"DEFN"定义 MACRO 宏。

-E

只运行 C 预编译器。

-g

生成调试信息。GNU 调试器可利用该信息。

-IDIRECTORY

指定额外的头文件搜索路径DIRECTORY。

-LDIRECTORY

指定额外的函数库搜索路径DIRECTORY。

-lLIBRARY

连接时搜索指定的函数库LIBRARY。

-m486

针对 486 进行代码优化。

-o

FILE 生成指定的输出文件。用在生成可执行文件时。

-O0

不进行优化处理。

-O

或 -O1 优化生成代码。

-O2

进一步优化。

-O3

比 -O2 更进一步优化,包括 inline 函数。

-shared

生成共享目标文件。通常用在建立共享库时。

-static

禁止使用共享连接。

-UMACRO

取消对 MACRO 宏的定义。

-w

不生成任何警告信息。

-Wall

生成所有警告信息。

目录
相关文章
|
存储 机器学习/深度学习 缓存
一看就懂!图解 Kotlin SharedFlow 缓存系统
一看就懂!图解 Kotlin SharedFlow 缓存系统
343 2
|
vr&ar 异构计算
最新版PR2023软件安装包Premiere2023永久汉化版下载
Premiere Pro 23.0 版专为帮助编辑人员制作创意内容而设计,提供了出色的字幕工具组合。借助改进功能(如批量编辑时间轴中的标题剪辑、灵活的对齐控件等)简化您的标题和图形工作流程。
2708 0
|
移动开发 运维 算法
室内电子地图制作:位构云平台,快速构建轻量级多类型地图
在数字化时代,室内导航和空间信息管理变得日益重要。位构云平台以其强大的功能和用户友好的界面,为用户提供了一个全面的解决方案,轻松构建多平台、综合型地图引擎,满足从商场到校园等各种场景的需求。
418 1
|
BI 数据处理 Apache
[AIGC] 深入理解Flink中的窗口、水位线和定时器
[AIGC] 深入理解Flink中的窗口、水位线和定时器
285 2
|
SQL 存储 Java
Sharding-JDBC 如何实现分片
以上是V 哥在教学过程中实现分片的示例步骤,Sharding-JDBC能够实现SQL的分片操作,将请求路由到正确的数据库和表中,从而实现数据的水平扩展,这是在使用例如 MySQL作为数据库的场景中经常会使用到的,但如果你的企业正在考虑分布式数据库迁移,V 哥建议可以考虑 TiDB 或 OceanBase 这样的分布式数据库,因为它们天然就支持分布式,而不需要考虑这些。
266 0
|
自然语言处理 网络协议 编译器
gRPC和Ice远程调用协议对比
gRPC和Ice远程调用协议对比
348 0
|
XML Java 数据格式
spring-aop的切入表达式和JoinPoint的使用以及怎么返回通知获取结果和在异常通知中获取异常还有环绕通知
spring-aop的切入表达式和JoinPoint的使用以及怎么返回通知获取结果和在异常通知中获取异常还有环绕通知
433 0
|
机器学习/深度学习 人工智能 自动驾驶
计算机视觉中的corner-case及其优化策略
Corner cases(CC)是指不经常出现或一些极端的场景数据,也是一种长尾问题的表现形式。然而,对于感知模型来说,CC非常重要,因为在自动驾驶系统的推理过程中,它需要训练、验证和提高感知模型的泛化性能。例如,一辆配备了最先进的目标检测器的车辆在高速公路上疾驰,可能无法及时发现失控的轮胎或翻倒的卡车(如下图)。这些自动驾驶目标检测失败的案例可能会导致严重的后果,危及生命。
计算机视觉中的corner-case及其优化策略
|
机器学习/深度学习 算法
连载|GBDT如何进行回归和分类
连载|GBDT如何进行回归和分类