g++命令

SIwave:在 SIwave 中释放计算频率扫描的强大功能 AEDT 的电路工具允许注入正确的电压和电流。要使用电路工具,SIwave 必须首先使用 PI 求解器求解结构的 S 参数。 阅读详情


本文部分翻译自https://www.man7.org/linux/man-pages/man1/g++.1.html,过程中借助AI工具进行翻译,并进行微调。

一、名称
gcc c和c++编译器
二、概要
       gcc [-c|-S|-E] [-std=standard]
           [-g] [-pg] [-Olevel]
           [-Wwarn...] [-Wpedantic]
           [-Idir...] [-Ldir...]
           [-Dmacro[=defn]...] [-Umacro]
           [-foption...] [-mmachine-option...]
           [-o outfile] [@file] infile...

        g++和gcc绝大部分选项是一致的。

三、常用选项

-E
在预处理之后停止;不执行编译。输出形式为预处理后的源代码,该代码被发送到标准输出。
不需要预处理的输入文件将被忽略。

示例:
$ g++ -E main.cpp -I ./lib

输出:

# 0 "main.cpp"
# 0 "<built-in>"
# 0 "<command-line>"
# 1 "/usr/include/stdc-predef.h" 1 3 4
# 0 "<command-line>" 2
# 1 "main.cpp"

# 1 "./lib/add.h" 1

int g_value;
int Add(int a, int b);
# 3 "main.cpp" 2

int main(){

  int a = 10, b = 11;
  int sum = Add(a, b);

  return 0;
}

-S
在编译之后停止;不进行汇编。输出形式为汇编代码文件。
默认情况下,源文件的汇编文件名是通过将后缀 .c、.i 等替换为 .s 来生成的。
不需要编译的输入文件将被忽略。

源代码--编译-->汇编代码

示例:
$ g++ -E main.cpp -I ./lib

查看:
$ cat main.s

输出结果:

    .file    "main.cpp"
    .text
    .globl    g_value
    .bss
    .align 4
    .type    g_value, @object
    .size    g_value, 4
g_value:
    .zero    4
    .text
    .globl    main
    .type    main, @function
main:
.LFB0:
    .cfi_startproc
    endbr64
    pushq    %rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    movq    %rsp, %rbp
    .cfi_def_cfa_register 6
    subq    $16, %rsp
    movl    $10, -12(%rbp)
    movl    $11, -8(%rbp)
    movl    -8(%rbp), %edx
    movl    -12(%rbp), %eax
    movl    %edx, %esi
    movl    %eax, %edi
    call    _Z3Addii@PLT
    movl    %eax, -4(%rbp)
    movl    $0, %eax
    leave
    .cfi_def_cfa 7, 8
    ret
    .cfi_endproc
.LFE0:
    .size    main, .-main
    .ident    "GCC: (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0"
    .section    .note.GNU-stack,"",@progbits
    .section    .note.gnu.property,"a"
    .align 8
    .long    1f - 0f
    .long    4f - 1f
    .long    5
0:
    .string    "GNU"
1:
    .align 8
    .long    0xc0000002
    .long    3f - 2f
2:
    .long    0x3
3:
    .align 8
4:

main.s是汇编代码

-c
编译或汇编源文件,但不进行链接。链接不会执行。最终输出是每个源文件的一个目标文件。
默认情况下,源文件的目标文件名是通过将后缀 .c、.i、.s 等替换为 .o 来生成的。
不要求编译或汇编的、无法识别的输入文件将被忽略。

汇编代码--汇编-->二进制代码

示例:
编译main.cpp
$ g++ -c main.cpp -I ./lib

使用objdump命令查看目标文件
$ objdump -DS main.o 

输出(部分):
main.o:     file format elf64-x86-64

Disassembly of section .text:

0000000000000000 <main>:
   0:    f3 0f 1e fa              endbr64 
   4:    55                       push   %rbp
   5:    48 89 e5                 mov    %rsp,%rbp
   8:    48 83 ec 10              sub    $0x10,%rsp
   c:    c7 45 f4 0a 00 00 00     movl   $0xa,-0xc(%rbp)
  13:    c7 45 f8 0b 00 00 00     movl   $0xb,-0x8(%rbp)
  1a:    8b 55 f8                 mov    -0x8(%rbp),%edx
  1d:    8b 45 f4                 mov    -0xc(%rbp),%eax
  20:    89 d6                    mov    %edx,%esi
  22:    89 c7                    mov    %eax,%edi
  24:    e8 00 00 00 00           call   29 <main+0x29>
  29:    89 45 fc                 mov    %eax,-0x4(%rbp)
  2c:    b8 00 00 00 00           mov    $0x0,%eax
  31:    c9                       leave  
  32:    c3                       ret    

Disassembly of section .bss:

0000000000000000 <g_value>:
   0:    00 00                    add    %al,(%rax)

可以看到,编译后目标文件已经是二进制代码。

-o file
指定输出文件名称

-std=
指定语言标准,目前只支持c和c++

示例:
$ g++ -std=c++11 main.cpp -I ./lib

-shared
生成一个动态库,然后可以与其他对象链接以形成可执行文件。并非所有系统都支持此选项。为了得到可预测的结果,您在指定此链接器选项时,也必须指定用于编译的同一组选项(-fpic、-fPIC 或 model 子选项)。

-g
生成调试信息,debug模式下用于调试代码

-pthread
链接到POSIX线程库

-I dir
添加搜索头文件目录

-Ldir
添加库文件搜索目录

-fpic
生成适用于共享库的与地址无关的代码(PIC)(如果机器支持的话)

-fPIC
生成与位置无关的的代码,适用于使用动态库,与“-fpic”的区别在于去除去全局偏移表的任何限制(如果机器支持的话)
 

uniapp 记录运动轨迹 开发_智能手环穿戴设备APP开发解决方案 智能手环是一种穿戴式智能设备,是目前备受关注的科技产品。目前智能手环具有的功能有记录日常生活中的运动数据、移动轨迹,定位等,有些还可以进行睡眠质量的检测,并将这些数据传送至移动端如手机、平板等,可对数据进行分析,指导健康生活的作用。而智能手环开发方案就是将这些功能实现,将算法烧录到主控板上。智能手环都有哪些功能  1、记录运动数据  对于喜欢健身的用户来说,智能手环记录的运动数据功能... 阅读详情

相关推荐

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5920

g++常用命令

g++常用命令 常用命令 默认生成a.out g++ test.cpp 指定生成可执行文件 g++ test.cpp -o test.out 生成调试和警告信息 g++ -g -Wall test.cpp -o test.out 编译选项 option 功能 举例 输出格式 -E 预处理 宏替换、头文件展开、去掉注释g++ -E test.cpp -o test.i *.i -S 生成汇编文件 g++ -S test.i -o test.s *. s -c 生

名字决定高度 4102

告别混乱!AutoSar BswM模式管理实战:手把手教你配置Rule与ActionList(附避坑指南)

本文详细解析了AutoSar BswM模式管理的实战配置,重点介绍了Rule与ActionList的高效组合方法,帮助开发者避免常见陷阱。通过具体案例演示了从基础到复杂的配置步骤,包括模式仲裁、逻辑表达式构建及ActionList优化策略,提升汽车电子系统的协调性与可靠性。

weixin_27066963的博客 259

Makefile选项CFLAGS,LDFLAGS,LIBS

CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。 CFLAGS: 指定头文件(.h文件)的路径,如:CFLAGS=-I/usr/include -I/path/include。同样地,安装一个包时会在安装路径下建立一个include目录,当安装过程中出现问题时,试着把以前安装的包的include目录加入到该变量...

weixin_30566149的博客 3145

HSmartWindowControl vs HWindowControl:Halcon老鸟教你如何根据项目需求选对控件(附性能对比)

本文深度对比Halcon图像处理中的HSmartWindowControl与HWindowControl控件,从性能、内存占用和交互体验等维度提供选型建议。HSmartWindowControl在硬件加速渲染、智能内存管理方面表现优异,特别适合医疗影像和工业检测等高性能需求场景,而HWindowControl则更适合兼容旧系统和资源受限环境。

weixin_30765505的博客 471

ArcGIS渔网分割实战:用Create Fishnet快速生成1km×1km网格(附GDP数据分析案例)

本文详细解析了ArcGIS中Create Fishnet工具在渔网分割中的应用,从基础操作到GDP空间分析全流程。通过1km×1km网格的创建与优化,实现经济数据的空间标准化和可视化表达,解决数据融合与分析的三大核心痛点。

weixin_29250403的博客 295

【C++】g++指令使用指南

【C++】g++指令使用指南

weixin_46274756的博客 1万+

EPLAN二次开发实战指南:从API接口到定制化界面

本文为EPLAN二次开发实战指南,详细介绍了从搭建C#开发环境、理解API接口到创建定制化插件的完整流程。通过实战案例,如批量修改设备属性和设计交互式界面,帮助电气工程师利用EPLAN二次开发实现工作流程自动化与深度定制,从而显著提升设计效率。

weixin_29246195的博客 806

g++(1) command

g++ 是 GNU 编译器集合 GCC(GNU Compiler Collection)中的一个编译器,用于编译 C++ 语言代码。注意 gcc 是 GNU 的 C 编译器,不要与 g++ 混为一谈。看官方手册你会发现 g++ 的命令选项多如繁星,令人头皮发麻。但是常用的命令选项也就那几个,足以完成日常编译,g++ 使用起来还是比较简单的!

Doublelv 的博客专栏。 1万+

HFSS初学笔记(二)——75Ω带状线设计

本文利用HFSS软件设计并优化了一条75Ω的带状线结构,通过调整几何参数和介质材料,实现了精确的阻抗控制。仿真结果显示,该带状线在高频信号传输中的表现优越,具有良好的S参数、低插入损耗和极小的信号反射损耗。

2401_87464239的博客 4546

YOLOv12改进入门篇 | 手把手讲解改进模块如何实现高效涨点,以SimAM注意力模块为例

本文记录的是。SimAM注意力模块通过优化能量函数来获得每个神经元的三维权重,而或增加计算复杂度。若是有轻量化需求的小伙伴,无参的注意力模块也许是一个不错的选择。

Limiiiing的博客 2910

g++ 命令

参考这里总结来说,缺点: 上面的有个缺点就是,需要在编译的指令上指定所有的参与文件,如果文件少还可以, 文件多的话,这么指定会很麻烦。vscode可以通过的版本,指定Path, 指定参与文件 g++ 参与编译的文件 1, Approach 1 在上面定义文件时,使用** 例如 替换为 OR

tortelee的博客 766

HarmonyOS应用开发者基础认证

B. 自定义组件:可复用的 UI 单元,可组合其它组件。D. 内置组件:ArkTS中默认内置的基本组件和布局组件,开发者可以直接调用,如Column、Text、Divider、Button等。E. 属性方法:用于组件属性的配置,统一通过属性方法进行设置,如fontSize()、width()、height()、color() 等。在Column和Row容器组件中,justifyContent用于设置子组件在主轴方向上的对齐格式,alignItems用于设置子组件在交叉轴方向上的对齐格式。

牛肉胡辣汤 3819

【g++编译命令】

gcc & g++现在是gnu中最主要和最流行的c & c++编译器 。 g++是c++的命令,以.cpp为主,对于c语言后缀名一般为.c。这时候命令换做gcc即可。其实是无关紧要的。 其实编译器是根据gcc还是g++来确定是按照C标准还是C++标准编译链接。 下面以Test.cpp为例: 命令: g++ Test.cpp 功能:生成默认为a.exe的文件,这个过程包含了编译和链接。 再说下-o命令,-o命令表示输出的意思,gcc/g++命令是非常灵活的,你不指定输出的文件名的时候默认生成的

qq_41270142的博客 5580

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

G++命令参数

写文章发现关注消息gcc/g++ 命令参数玻璃缸里的自游关注赞赏支持gcc/g++ 命令参数 gcc/g++ 在执行编译时,需要4步  1.预处理,生成.i的文件[使用-E参数]  2.将预处理后的文件转换成汇编语言,生成文件.s[使用-S参数]  3.由汇编变为目标代码(机器代码)生成.o的文件[使用-c参数]  4.连接目标代码,生成可执行程序[使用-o参数]-x language filename设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c

Tlwhisper的博客 1553

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

g++的命令选集

这一次,主要想分享一下个人认为比较有意思的g++命令。也就是说不会涵盖所有的命令。-显示所有可能的警告信息。

weixin_40763897的博客 2848

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

g++ 编译器命令简单介绍

vscode 的tasks.json中使用的是g++编译器命令,本文将介绍一些关于g++的常用编译命令;

m0_64240990的博客 886

g++ 命令的使用

g++ 命令的使用 引入头文件 编译多个源文件 调试 实例 引入头文件 当我们只编译一个main.cpp文件时输入: g++ -o a.out main.cpp 当我们需要编译一个头文件和一个源文件如:common.h和main.cpp文件时: 假设common.h与main.cpp在同一文件夹下: g++ -o a.out main.cpp -I . common.h在/

fb_help的专栏 8804

g++常见命令使用

** g++常用命令 ** **1.g++ test.cpp 说明:默认生成a.out可执行文件,这个过程包括编译和链接 2.g++ -E test.cpp > test.i 说明:单纯的预处理命令,生成test.i预处理文件 3.g++ -S test.cpp 说明:生成.s的汇编文件,里面全是汇编指令 4.g++ -o test.o test.cpp 说明:生成.o的目标文件(可使用./...

m0_45125023的博客 2465

【编译器】G++常用命令

1、默认 命令: g++ test.cpp 功能:生成默认为a.exe的文件。 2、命名 -o 命令: g++ test.cpp -o test 功能:生成test.exe的文件。 3、调试 -g 命令: g++ qaq.cpp -o qdq -g 功能:生成用于gdb调试的文件qdq.dSYM。 4、警告 -W -w 命令:g++ qaq.cpp -o qaq -W 功能:显示所有的警告信息 命令:g++ qaq.cpp -o qaq -w 功能:禁止显示所有警告信息 5、优化 -O{num} 命令:g+

oldmoney 4411

g++命令参数详解

设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是根据约定,C语言的后缀名称是.c的,而C++的后缀名是.C或.cpp,如果你非常个性,决定你的C代码文件的后缀名是.pig 哈哈,那你就要用这个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数的使用。制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,非常难听,如果你和我有同感,改掉他,哈哈。此选项传递option给汇编程式;生成文件关联的信息。在预处理的时候,不删除注释信息,一般和-E使用,有时候分析程式,用这个非常方便的。

weixin_60031374的博客 2258

g++终端命令行整理

DDEBUG # 定义一个宏 DEBUG-DFLAG=1 # 定义一个宏 FLAG 为 1#endif。

qq_54532893的博客 829

使用G++编译运行c++(by命令行)

准备工作: 下载安装 G++( for win) 下载地址:http://download.youkuaiyun.com/detail/v_xchen_v/8947011 G++配置(如果不配置环境变量,命令行将无法识别G++指令) 对于设置,我们只需要在环境变量中的PATH 变量中,添加$/bin这个路径就可以了,这样我们的gcd编译环境就搭配好了。 比如我的安装路径为 D:CBCo

赞美月亮的专栏 1万+

Linux和gcc/g++常用命令总结

Linux和gcc/g++常用命令总结

2302_80345385的博客 1347

g++编译命令大全

编译 sourcefile.cpp 生成目标文件 sourcefile.o,但不进行链接。编译 sourcefile.cpp 生成目标文件 outputfile.o。-fno-exceptions:不使用 C++ 异常。-fPIC:生成与位置无关的代码,通常用于共享库。-std=c++98:使用 C++ 98 标准。-std=c++11:使用 C++ 11 标准。-std=c++14:使用 C++ 14 标准。-std=c++17:使用 C++ 17 标准。-std=c++20:使用 C++ 20 标准。

m0_49133355的博客 2735

g++命令用法介绍

g++命令用法介绍首先,要编译运行一个C++源文件,g++的编译流程是这样的:预处理 —> 编译 —> 汇编 —> 链接1.预处理命令:g++ -E 仅做预处理,不进行编译、汇编和链接。得到.l格式文件如: g++ -E main.cpp -o main.l2.编译命令:g++ -s 编译到汇编语言,不进行汇编和链接。得到.s格式文件如:g++ -s main.l -o main.s3.汇编命令:g

Summit的专栏 2953
上一篇: objdump命令解析
下一篇: “无法解析的外部符号”通用解决思路
SimpleForest
博客等级 码龄10年 171粉丝 95原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值