gcc与g++的使用

2023-11-03

1 gcc编译器的基本语法格式如下:

gcc  【选项】 准备编译的文件  【选项】  【目标文件】

例如:编译名为 test.c 的c程序  :  gcc test.c -o test

 

2 若使用gcc编译器编译c++程序,与编译c程序略有不同:

若cpp文件中未使用任何c++标准库的内容,即还是c语言,则无需特殊处理;

若cpp文件使用了如std命名空间等c++内容,则在gcc选项中需要链接上相关c++库;

例如:使用gcc编译名为 test.cpp 的c++程序,其中使用了std命名空间:

gcc test.cpp -lstdc++ -o test

-l:gcc的链接选项 ,将c++标准库的stdc++链接上

 

3 gcc常见选项

无选项:在准备编译的文件目录下生成可执行文件 a.out ,例如:gcc test.c

-x:告诉gcc源文件的语言,若不使用,则默认根据文件后缀判断语言,例如:gcc -x c test.fuck ,“c”处还可为:c++  ,assembler ,c-header ,objective-c ,等

-o:用于指定结果名称

-c:告诉gcc只进行编译和汇编,不进行链接,将生成一个不可执行的 .o 文件,例如:gcc -c test.cpp

-I(大写i):指定头文件所在文件夹路径,语法:-I dirPath 。若源代码使用尖括号包含头文件,gcc首先在-I指定的目录下寻找,再到标准默认路径/usr/local/include下搜索,再到标准默认路径/usr/include下搜索,再搜索不到就报错;若使用双引号包含的头文件,gcc先在当前工作目录寻找,再到上述三个目录寻找。例如:gcc test.cpp -I /fuck/inc -o test

-include:有时候源程序没有写包含头文件的代码却使用了头文件内容,可以考虑是在gcc编译阶段进行了包含,使用方法: gcc [srcfile] -include [headfile],例如:gcc test.cpp -include /fuck/inc/test.h -o test

-Wall:显示所有警告信息,例如:gcc test.cpp -Wall -o test

-g:可以产生供gdb调试的可执行文件,例如:gcc test.cpp -g -o test

-pg:可以产生供gprof剖析用的可执行文件,用于性能分析

-l:用于链接动态链接库,用法是直接加上库名字,例如:gcc test.cpp -lstdc++ -o test

 

4 g++的基本使用

g++与gcc类似,,有相同的语法结构和选项,专用于编译c++文件,且能自动链接c++标准库,更为方便。

编译多个c++程序:g++ test1.cpp test2.cpp -o test

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

gcc与g++的使用 的相关文章

  • 使用Address Sanitizer和gcc7.1.0时如何生成核心转储

    我编译了我的代码 fsanitize address在 CentOS 7 2 1511 上 当我将 gcc 更新到 7 1 0 时 它无法再生成核心转储文件 有谁能够帮助我 gcc编译选项 lm g3 Wall Wno unknown pr
  • 编译器特定的内存初始化

    有没有办法保证整个程序中某些对象的静态对象初始化顺序 我有内存分配器 我希望将其作为程序中的第一件事进行分配 因为它们将在整个程序的其他地方使用 并且我想使用这些分配器来分配所有后续内存 我知道这可能是特定于编译器的 因为我不相信 C 标准
  • g++、colorgcc 和 ccache

    尝试结合 ccache 和 colorgcc 下列的链接文本 http wiki tudos org Gcc stack 我的 g 是到 colorgcc 的软链接 colorgccrc 包含行 g ccache usr bin g 运行
  • g++ / gcc 是否支持 C++20 新的atomic_flag 功能?

    根据参考参数 https en cppreference com w cpp atomic atomic flag c 20 有丰富的 对我来说有用的 支持atomic flag运营 然而 目前尚不清楚 gcc 是否支持这些功能 它们在任何
  • #pragma init 和 #pragma fini 在 Linux 上使用 gcc 编译器

    我想构建一些代码 在加载共享库时调用一些代码 我想我会这样做 pragma init my init static void my init do something int add int a int b return a b 所以当我用
  • 使用 gcc 编译 C 时,预处理的 .i 文件中的数字意味着什么?

    我想了解编译过程 我们可以使用以下命令查看预处理器中间文件 gcc E hello c o hello i or cpp hello c gt hello i 我大致知道预处理器的作用 但我很难理解某些行中的数字 例如 1 usr incl
  • 在标准库中静态链接时如何支持动态插件?

    假设一个应用程序myapp exe是使用构建的g 它使用标志 static libstdc 这样就可以安装在没有环境的情况下libstdc so myapp exe还添加了对某些功能的插件支持plugf可以通过动态加载dlopen来自共享库
  • 解析 std::type_info::name 的结果

    我目前正在编写一些日志记录代码 这些代码应该 除其他外 打印有关调用函数的信息 这应该是比较容易的 标准C 有一个type info班级 这包含 typeid 类 函数 等的名称 但它已经损坏了 这不是很有用 IE typeid std v
  • malloc和gcc优化2

    while count lt 30000000 malloc 24 count 上面的代码在我用 gcc O0 编译的计算机上运行大约需要 170 毫秒 但是 使用 Ox 其中 x gt 0 进行编译时 优化器会巧妙地发现所请求的内存永远不
  • 如何使用现代 GCC 抑制“-fpermissive”错误?

    我正在尝试编译一些不合格的代码C 17 https en wikipedia org wiki C 2B 2B17 但我遇到了以下问题 pragma GCC diagnostic push pragma GCC diagnostic ign
  • 链接器如何在没有 SONAME 的情况下找到共享库

    如果我创建一个没有这样的 SONAME 的共享库 gcc shared libfoo o o libfoo so 并链接到它 链接器如何找到我的共享库 是文件名libfoo so链接器将其视为默认 SONAME 吗 我想你是正确的 ld 手
  • GCC 变量映射和 MISRA-C

    我主要知道两种使用 GCC 声明内存映射寄存器的方法 有许多变体 使用双字段 每个外设的数据结构等 要么使用初始化为正确地址的指针 例如volatile uint32 t pMyRegister uint32 t 0xDEADBEEFUL
  • C 未定义的行为。严格的别名规则,还是不正确的对齐? [复制]

    这个问题在这里已经有答案了 我无法解释该程序的执行行为 include
  • 如何用gcc进行矢量化?

    v4系列的gcc编译器可以使用以下方法自动向量化循环SIMD http en wikipedia org wiki SIMD某些现代 CPU 上的处理器 例如 AMD Athlon 或 Intel Pentium Core 芯片 这是怎么做
  • 在 Objective-C 中使用 GCC C 扩展(语句表达式)进行初始化 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 GNU C 提供了标准 C 中没有的多种语言功能 这些扩展在 C 和 Objective C 中都可用 有一个 GCC C 扩展 称为语句表达式
  • 从内存加载动态库

    是否可以从内存而不是从 mac gcc 上的文件系统加载库 在 Windows 中 我使用 MemoryModule 但它显然不跨平台兼容 首先 要做到这一点 我建议您阅读OS X ABI 动态加载器参考 https developer a
  • std::thread::id 的 std::operator== 中的分段错误

    我遇到了一个问题 我不确定如何解决 我相信这是 GCC 和 或 libstdc 中的问题 我正在运行 Ubuntu 14 04 LTS 和 GCC 4 8 2 19ubuntu1 libstdc 3 4 19 我相信 如何找到 Linux
  • 与 SSE 比较 16 字节字符串

    我有 16 字节的 字符串 它们可能更短 但您可能会假设它们在末尾用零填充 但您可能不会假设它们是 16 字节对齐的 至少不总是 如何编写一个例程将它们与 SSE 内在函数进行比较 是否相等 我发现这个代码片段可能会有帮助 但我不确定它是否
  • 所有 CopyConstructible 类型都是 MoveConstructible 类型吗?

    根据工作草案 N3337 与已发布的 ISOC 11 标准最相似的草案 和cppreference com http en cppreference com w cpp concept CopyConstructible 答案是肯定的 N3
  • 为什么 GCC 不会在文件末尾生成任何有关换行符的警告?

    From C11 5 1 1 2 翻译阶段 第 2 段 非空的源文件应以换行符结尾 字符 其前面不得紧接反斜杠 发生任何此类拼接之前的字符 这意味着每个源文件都必须以换行符结尾 Example include

随机推荐

  • 在windows上编译Inlong所遇到的问题

    1 Hadoop相关的问题 在windows中 由于Inlong的很多单元测试用例都需要用到hadoop的相关组件进行测试 可以采用winunits配合测试 winutils是windows上专门配合hadoop和yarn测试的工具 在gi
  • Windows Server 2012 R2无法正常安装vmtools

    情形 在VMWare虚拟机上安装Windows Server 2012之 后安装VMWare Tools时报如下错误信息 解决方法 在VMWare虚拟机中的Windows Server 2012操作系统上安装Windows8 1 KB291
  • element admin 中动态设置快捷导航(标签栏导航)meta标签和title标签

    因为和原生的交互是需要h5这边来提供meta标签的来是来判断要不要显示分享按钮 所有就需要手动设置meta标签 标题和内容 这种情况就是我的左侧菜单只有一个 但是我在列表页面打开每一个连接的时候 都是新开一个标签栏导航 标题是自定义的 比如
  • java项目切换数据库Mysql到Oracle 11g(包含表结构转换与数据迁移)

    0 前言 最近公司要求把项目数据库从mysql换成Oracle 目前总算是快完成了 就写个帖子记录下遇到的问题 网上的教程五花八门 同时给一些也在寻找方法的人一些帮助 有什么问题可以在评论里讨论 使用sqldeveloper迁移表和数据比c
  • window.addEventListener监听事件在vue组件中使用

    最近在搞收银台页面调用终端机的项目 上面领导只是给了一个原生js的demo 让用vue写页面 搞了一天没怎么出成果 最后是监听事件的锅 别的不多说 直接上代码 写在created里面就好了 ok啦 注意 有个坑 event那里必须写成箭头函
  • 融云猿桌派备忘录,那些被程序员 Pick 的工作方式

    3 月 10 日 猿桌派 第 2 季第 1 期正式开播 关注 融云全球互联网通信云 了解更多 节目主理人融云技术 VP 臧其龙与 Grab 高级研发宋清晨 VMware iOS MacOS 开发尚传人就 中外互联网公司面面观 展开讨论 嘉宾
  • js 判断数据类型最常用的方法

    1 最常用方法 typeof typeof 是最常用判断数据类型的方法 只能判断基本数据类型 返回值有7种 number string boolean null undefined symbol es6新增 2 判断对象类型 instanc
  • 字节跳动头条2022测试开发岗 3+1 面经+经验分享(收到offer,入职月薪30K)

    现在 招聘黄金时间已经来临 在网上看了很多大佬的面经 也加了很多交流群 受到了很多朋友的提点 今天终于轮到我来分享面经啦 之前面试了几家公司 最后在八月初拿到了字节跳动测试岗的 offer 这里总结一下自己的面经和复习历程 顺便谈谈我的一些
  • php基础控制器,HTTP控制器

    HTTP控制器 由 学院君 创建于4年前 最后更新于 1年前 版本号 1 7403 views 4 likes 0 collects 1 简介 将所有的请求处理逻辑都放在单个routes php中肯定是不合理的 你也许还希望使用控制器类组织
  • java http 传输中的转义_小猿圈Java学习-URL地址的组成格式

    URL的全称是Uniform Resource Locator 意思是统一资源定位符 俗称网络地址或网址 网络上的每个文件及接口 都有对应的URL网址 它规定了其他设备如何通过一系列的路径找到自己 犹如网购的包裹一路送至收货地址所描述的地点
  • 疯壳-鸿蒙OS-工具安装指南

    1 将Linux shell改为bash 1 查看shell是否为bash 在终端运行如下命令 ls l bin sh 如果为显示为 bin sh gt bash则为正常 否则请按以下方式修改 方法一 在终端运行如下命令 然后选择 no s
  • Weblogic远程代码执行漏洞(CVE-2020-14645)

    简介 WebLogic是美国Oracle公司出品的一个application server 确切的说是一个基于JAVAEE架构的中间件 WebLogic是用于开发 集成 部署和管理大型分布式Web应用 网络应用和数据库应用的Java应用服务
  • Linux进程间通信机制

    Linux下的通信手段基本上是从Unix平台上的进程通信机制继承而来 Linux下的进程通信通信机制主要包括 管道 Pipe 及有名管道 named pipe 管道可用于具有亲缘关系进程间的通信 有名管道克服了管道没有名字的限制 因此 除具
  • C语言之求两个整数之和。

    思路 定义三个变量 a b sum a和b用来存放两个加数 sum用来存放和 include
  • C语言—循环结构的总结

    循环结构的三种基本结构 特点 在给定条件成立时 反复执行每段程序 直到条件不成立为止 一次又一次的执行相同代码 1 while循环 基本框架 表达式1 while 表达式2 语句 表达式3 lt 1 gt while后面的语句称为循环体 l
  • 现代密码学-传统密码技术(置换、代换密码)

    目录 置换密码 换位密码 列置换 周期置换 代换密码 单表代换密码 多表代换密码 参考 置换密码 换位密码 置换密码 Permutation Cipher 又叫换位密码 Transposi tionCipher 它根据一定的规则重新排列明文
  • 管理_立项任务书怎么写——毛宇菲

    内容转自公众号 硬件十万个为什么 作者 毛宇菲 当一个项目的很多细节点存在疑问的时候 那就说明这是一个 没有想清楚的项目 了 类似的有 项目目标不能量化 结果不可测量 投入资源不能衡量 等等问题 如何从源头上规避 没想清楚的项目 呢 第一
  • 闭包Closure

    x xxx 概念 控制台打断点 闭包的作用 return外部函数使用内部变量 当闭包形成时下的写法才有用 闭包的经典样式
  • 微信订单管理软件列表支持小程序(逻辑猫订货系统)

    订货信息管理系统 订货系统的作用 在线订单管理系统 订货系统又名 订单管理系统 订单管理系统分为销售订单和订货订单 这里的订货系统信息管理用于厂家的客户进行订货 并非商城 客户可通过订货端进行订货 订货系统支持的版本 订货系统 订单信息管理
  • gcc与g++的使用

    1 gcc编译器的基本语法格式如下 gcc 选项 准备编译的文件 选项 目标文件 例如 编译名为 test c 的c程序 gcc test c o test 2 若使用gcc编译器编译c 程序 与编译c程序略有不同 若cpp文件中未使用任何