linux下gcc/g++编译器使用

2023-10-29

linux编译器gcc / g++ 使用

1.gcc 编译器编译c语言程序

gcc + 文件名(默认生成a.out 可执行程序程序)

 我们执行a.out由两种方法(相对路径  \   绝对路径)

进行程序的翻译

1.预处理(进行宏替换、头文件展开、去注释、条件编译)

2.编译(生成汇编)

3.汇编(生成机器可识别代码)

4.链接(生成可执行文件或库文件)

1.预处理

gcc  -E  c语言文件

我们去掉  -o   不指定预处理完的内容放入指定的文件 ,    那么预处理完的内容直接输出在命令行上(这样子没有任何意义)

 我们可以观察  test2.i

 2.编译

gcc    -S    文件 (可以从 .c 文件开始  ,也可以从 .i 文件开始)

  - S      开始进行编译,编译完成后停止

3.汇编

上一阶段进行了编译,将 c语言转成了汇编语言,但计算机不可以直接执行汇编语言,汇编语言还需要编译器。

 这里的可重定向二进制目标文件(其实也就是 在vs 下的  .obj  文件了)

 4.链接


 

 ldd 查看可执行程序依赖第三方库的命令

 链接如何理解????

动态链接、静态链接

 那么我们gcc  编译器默认是动态链接方式 , 形成可执行程序

 

 那么如果我们想静态链接呢???

-static

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

linux下gcc/g++编译器使用 的相关文章

  • Tomcat Intellij Idea:远程部署

    RackSpace 云服务器 Ubuntu 12 04 Intellij Idea 11 1 2 Windows 8 Tomcat 7 0 26 JDK 6 在 Intellij Idea 上 当我尝试在远程 Tomcat 7 服务器上运行
  • 仅使用containerd(不使用Docker)修剪容器镜像

    如果我刚刚containerd安装在 Linux 系统上 即 Docker 是not安装 如何删除未使用的容器映像以节省磁盘空间 Docker 就是这么方便docker system prune https docs docker com
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • 使用 \r 并打印一些文本后如何清除控制台中的一行?

    对于我当前的项目 有一些代码很慢并且我无法使其更快 为了获得一些关于已完成 必须完成多少的反馈 我创建了一个进度片段 您可以在下面看到 当你看到最后一行时 sys stdout write r100 80 n I use 80覆盖最终剩余的
  • linux-x64 二进制文件无法在 linuxmusl-x64 平台上使用错误

    我正在安装Sharp用于使用 package json 的 Nodejs 项目的 docker 映像上的映像压缩包 当我创建容器时 我收到有关 Sharp 包的以下错误 app node modules sharp lib libvips
  • 如何阻止ubuntu在使用apt安装或更新软件包时弹出“Daemons using outdatedlibraries”? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我最近新安装了 Ubuntu 22 04 LTS 我发现每次使用 apt 安装或更新软件包时 它都会询问我有关Which servic
  • C 语言的符号表

    我目前正在开发一种执行模式匹配的静态分析工具 我在用Flex https github com westes flex生成词法分析器 我编写了代码来管理符号表 我不太有经验C 所以我决定将符号表实现为线性链表 include
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 使用循环在 C 中管道传输两个或多个 shell 命令

    我正在尝试执行ls wc l通过 C 语言程序 而不是使用命令行 这是我当前的工作代码 int main int pfds 2 pipe pfds pid t pid fork if pid 0 The child process clos
  • 添加文件时运行 shell 命令

    我的 Linux 机器上有一个名为 images 的文件夹 该文件夹连接到一个网站 该网站的管理员可以向该网站添加图片 但是 当添加图片时 我想要一个命令来运行调整目录中所有图片的大小 简而言之 我想知道当新文件添加到特定位置时如何使服务器
  • 静态方法的 Java 内存模型

    我来自操作系统和 C 语言背景 在代码编译时 世界很简单 需要处理和理解堆栈 堆文本部分等 当我开始学习 Java 时 我确实了解 JVM 和垃圾收集器 我对静态方法感到很有趣 根据我的理解 类的所有实例都会在堆中创建 然后被清理 但是 对
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 绕过 dev/urandom|random 进行测试

    我想编写一个功能测试用例 用已知的随机数值来测试程序 我已经在单元测试期间用模拟对其进行了测试 但我也希望用于功能测试 当然不是全部 最简单的方法是什么 dev urandom仅覆盖一个进程 有没有办法做类似的事情chroot对于单个文件并
  • Linux 为一组进程保留一个处理器(动态)

    有没有办法将处理器排除在正常调度之外 也就是说 使用sched setaffinity我可以指示线程应该在哪个处理器上运行 但我正在寻找相反的情况 也就是说 我想从正常调度中排除给定的处理器 以便只有已明确调度的进程才能在那里运行 我还知道
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 使用os.execlp时,为什么`python`需要`python`作为argv[0]

    代码是这样的 os execlp python python child py other args this works os execlp python child py other args this doesn t work 我读过
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • 复制目录内容

    我想将目录 tmp1 的内容复制到另一个目录 tmp2 tmp1 可能包含文件和其他目录 我想使用C C 复制tmp1的内容 包括模式 如果 tmp1 包含目录树 我想递归复制它们 最简单的解决方案是什么 我找到了一个解决方案来打开目录并读
  • 尽管我已在 python ctypes 中设置了信号处理程序,但并未调用它

    我尝试过使用 sigaction 和 ctypes 设置信号处理程序 我知道它可以与python中的信号模块一起使用 但我想尝试学习 当我向该进程发送 SIGTERM 时 但它没有调用我设置的处理程序 只打印 终止 为什么它不调用处理程序
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • 一看就懂!如何将Zabbix监测到的数据导出?

    前言 Zabbix是一款服务器监测应用 有良好的web界面 美中不足的是缺乏导出报表的功能 但是Zabbix同时也提供了强有力的API支持 https www zabbix com documentation 3 4 zh manual a
  • 一键分块,轻松拼图!使用Segment Anything让你的设计更加高效!

    目录 第一步 第二步 第三步 第四步 如果你是一名设计师或者摄影爱好者 那么你一定经常需要将图片分割成不同的块 以便在不同的场合下使用 例如 在网页设计中 你可能需要将图片分割成不同的块 以便在不同的区域中使用 而分块的难度不小 需要一定的
  • java easypoi导出word时添加空白页导出多组相同类型的数据

    1 需求 导出用户信息 模板如下 要求 导出多个用户信息时 另起一页 根据模板生成下一条用户信息 2 模板变化 easypoi不能直接创建空白页 下一页 但可以使用apache的poi中的document createParagraph c
  • 【系统架构】什么是集群?为什么要使用集群架构?

    什么是集群 为什么要使用集群架构 1 什么是集群 2 为什么要使用集群 2 1 高性能 2 2 价格有效性 2 3 可伸缩性 2 4 高可用性 2 5 透明性 2 6 可管理性 2 7 可编程性 3 集群的常见分类 3 1 负载均衡集群 3
  • 提速科研,AI 正引领一场新革命

    By 超神经 内容一览 五一国际劳动节假期 HyperAI超神经为大家汇总了往期 ScienceAI 相关报道 对该领域感兴趣的读者可以来一探究竟了 关键词 ScienceAI 盘点 整理 缓缓 作为近两年的技术热点 ScienceAI 在
  • mysql实现if语句判断功能的六种使用形式

    文章目录 前言 一 ifnull函数 二 nullif函数 三 if函数 四 if语句 多用于存储过程 五 if else语句 多用于存储过程 六 if elseif else语句 多用于存储过程 总结 前言 在Mysql数据库中实现判断功
  • 2023-6-1第三十二天

    reserved矜持的 预定的 专用的 reserve预定 保留 储备 discard丢弃 抛弃 ensemble整体 全体 assemble集合 收集 组装 tutorial教程 辅导材料 convention习俗 惯例 distract
  • Git cherry-pick 指令总结

    使用场景 在某些开发中 可能会有多个分支 比如 你负责的项目在生成环境出现一个致命Bug 公司项目管理领导需要你立即解决修复 并且针对本次修改拉取了一个临时分支 dev 20221109 分支 但你在解决问题时没有及时把自己本地分支由dev
  • mysql使用存储过程将一个表中的数据导入另一个表

    存储过程 本人也是第一次使用存储过程 中间遇到了很多坑 在此记录一下 希望能帮助使用的人少踩点坑 先说一下我使用存储过程的需要 其实需求很简单就是把一个表中的数据导入一个新的表中 并且删除原有表中的数据 说白了就是一个数据的备份 我是使用n
  • Python实现Excel办公自动化之openpyxl

    目录 Excel安装库的对比 安装 基本操作 1 引入库 2 工作簿 创建或者加载工作簿 获取当前工作表 3 工作表 创建工作表和获取工作表 获取所有工作表 删除工作表 复制工作表 过滤和排序 使用公式 4 单元格 访问单元格 合并单元格
  • Django资料之ORM查询操作

    条件查询 models User objects filter id 1 name root 等于 models User objects filter id gt 1 name root 大于 models User objects fi
  • xilinx ip 高斯滤波

    功能 1 单axi stream 接口输入 10bit raw输入 axis输出 10bit输出 使用5x5 的卷积进行滤波 2 使用xilinx hls 编写 3 配置寄存器有 pragma HLS INTERFACE s axilite
  • Spring学习笔记:AOP

    学习内容 AOP 文章目录 学习内容 AOP 一 什么是AOP 二 AOP中的相关概念 三 使用Spring实现AOP 1 使用原生Spring API接口 2 自定义类来实现AOP 3 使用注解实现 四 AOP中的五类通知 一 什么是AO
  • PCL 1.13.0——中文显示乱码解决办法

    目录 一 问题概述 二 解决方法 一 问题概述 PCL1 13 0中使用的是VTK9 2进行点云的可视化 在使用中发现PCL1 13 0中的setWindowName 进行中文名称显示的时候会出现乱码现象 如下所示 可视化投影结果 boos
  • 特殊矩阵的压缩存储(对称矩阵,三角矩阵和三对角矩阵)

    目录 1 对阵矩阵 2 三角矩阵 3 三对角矩阵 带状矩阵 均假设数组的下标从0开始 1 对阵矩阵 定义 若对一个n阶矩阵A中的任意一个元素 a 都有a a 1 i j n 则称其为对称矩阵 存储策略 只存储主对角线 下三角区 或主对角线
  • shardingsphere的坑。。。

    前面有说到defaultDataSource设置不生效 手动修改后 此项还勉强能用 如今又遇到一个奇葩的问题 本地调试时一切正常 丢到服务器后就一直报错 重点是 只是说空指针 就是不说具体哪里有毛病 报错信息如下 Creating a ne
  • 数据库连接用法

    1 内联接 典型的联接运算 使用像 或 lt gt 之类的比较运算符 包括相等联接和自然联接 内联接使用比较运算符根据每个表共有的列的值匹配两个表中的行 例如 检索 students和courses表中学生标识号相同的所有行 2 外联接 外
  • Java编程工具哪种好?

    Java强大的功能需要依托在软件工具上实现 所以Java编程开发需要用到编程工具 市面上有哪些Java编程工具呢 那种编程工具好呢 该怎么选择呢 接下来罗列了一系列的Java编程开发工具 一 idea 这是jetbrains公司的产品 也是
  • 从0实现基于Linux socket聊天室-多线程服务器模型-1

    前言 Socket在实际系统程序开发当中 应用非常广泛 也非常重要 实际应用中服务器经常需要支持多个客户端连接 实现高并发服务器模型显得尤为重要 高并发服务器从简单的循环服务器模型处理少量网络并发请求 演进到解决C10K C10M问题的高并
  • linux下gcc/g++编译器使用

    linux编译器gcc g 使用 1 gcc 编译器编译c语言程序 gcc 文件名 默认生成a out 可执行程序程序 我们执行a out由两种方法 相对路径 绝对路径 进行程序的翻译 1 预处理 进行宏替换 头文件展开 去注释 条件编译