当前位置: 首页 > news >正文

程序员的自我修养——(2)编译与链接

catalog

  • 构建
    • 预编译
    • 编译
    • 汇编
    • 链接

构建

构建build 是 ide里的词,构建 = 编译 + 链接。

一个gcc 1.c,其实是: 预处理 + 编译 + 汇编 + 链接

预编译

源文件,被预编译器cpp 编译成: .i文件。 gcc -E 1.c -o 1.i

  • 展开所有的#define宏定义
  • 将#include所引用的文件,插入到 这条执行的位置。(这个过程是递归的,因为可以多层引用include)
  • 删除所有的注释
  • 添加行号和文件名标识:#1 "1.cpp",以便编译器产生错误后 可以显示行号的错误信息。
  • 保留#prama指令!! 因为编译器要使用它。

编译

.i文件,被编译成:.s汇编代码 gcc -S 1.i -o 1.s
进行:词法、语法、语义 分析,指令优化。

现在的gcc,会把预编译 和 编译,合为一个步骤。由名为cc1的程序 来完成。

这个程序,在c叫做cc1,在c++叫做cc1plus,在java叫做jc1

汇编

.s文件,被汇编成:.o机器指令目标文件 gcc -c 1.s -o 1.o
由: 汇编器as完成。

每一条汇编语句, 都对应一条机器指令。 所以,as的汇编过程 没有编译器复杂,不用做语义分析 指令优化等。
只需将 汇编指令 和 机器指令,一一对照翻译即可。

思考: 汇编器,为什么不直接输出exe,而是输出一个obj文件

链接

ld链接器是一个复杂的过程…
ld -static crt1.o crti.o ctrbeginT.o 1.o -start-group -lgcc -lgcc_eh -lc-end-group crtend.o crtn.o

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35095.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

进出境快件如何报关

(一)快件的报关  1.快件的报关和查验应当在运营人所在地海关办公时间和专门监管场所内进行。如需在海关办公时间以外或专门监管场所以外进行,需事先商得海关同意,并向海关无偿提供必需的办公场所及必备的设施。 2.进境的快件…...

深度学习常用数据集

常用数据集Iris数据集(鸢尾花数据集)MushRoom数据集(蘑菇数据集)Bostom Housing数据集(波士顿房价数据集)Linnerrud 数据集MINST数据集Caltech101数据集Caltech256数据集CIFAR-10数据集CIFAR-100数据集SVHN…...

HTTP-2做错了什么?刚刚辉煌2年就要被弃用了!?

最近一段时间以来,关于HTTP/3的新闻有很多,越来越多的国际大公司已经开始使用HTTP/3了。 所以,HTTP/3已经是箭在弦上了,全面使用只是个时间问题,那么,作为一线开发者,我们也是时候了解下到底什么…...

JVM篇-知识点梳理

导致OutOfMemoryError异常的常见原因: 1内存中加载的数据量过于庞大,如一次从数据库取出过多数据; 2集合类中有对对象的引用,使用完后未清空,使得JVM不能回收; 3代码中存在死循环或循环产生过多重复的对…...

转载 | 各种数据库JDBC下载

原文链接点击打开链接各种数据库驱动数据库名称下载地址说明Mysqlhttp://www.mysql.com/products/connector/j/Shipped. But need to download the latest for MySQL 4.1 or higher.Oraclehttp://sourceforge.net/project/showfiles.php?group_id33291software/tech/java/sqlj…...

Hibernate对实际数据进行操作

//增 public static void main(String[] args){ Configuration cfg null; SessionFactory sf null; Session session null; Transaction ts null; User u new User(); System.out.println("请输入用户信息:&quo…...

sql中grant授权语句revoke撤销语句

MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一、grant 普通数据用户,查询、插入、更新、删除 数据库中所有表数据的权利 grant select on testdb.*to common_user%; grant insert on testdb.*to common_user%; gran…...

QT如何设置小程序不被重复启动多个该程序

添加互斥锁 判断 如果进程有该程序&#xff0c;则return不运行 #if defined Q_OS_WIN32 //for win #include <windows.h> bool checkOnly() {// 创建互斥量HANDLE m_hMutex CreateMutex(NULL, FALSE, L"fortest_abc123" );// 检查错误代码if (GetLas…...

政产学研各界推动软件和信息技术服务业增速发展

​日前&#xff0c;工业和信息化部发布的最新数据显示&#xff0c;上半年&#xff0c;我国软件和信息技术服务业业务收入呈加快增长态势&#xff0c;完成软件业务收入44198亿元&#xff0c;同比增长23.2%&#xff0c;近两年复合增长率为14.7%。 从利润水平来看&#xff0c;上半…...

JavaScript-DOM、BOM对象

DOM对象 功能&#xff1a;控制html文档的内容 1、获取页面标签(元素)对象&#xff1a;Element 方法&#xff1a;document.getElementById(“id值”)&#xff1a;通过元素id获取元素对象、 2、操作Element对象&#xff1a; 1&#xff09;. 修改属性值&#xff1a; 明确获取的对…...

Java学习五阶段-RabbitMQ-SpringBoot整合

文章目录 新建项目pom.xmlapplication.yml主程序 简单模式主程序生产者消费者测试类 工作模式主程序生产者消费者测试类 ack模式设置 ack 模式手动执行确认操作 抓取数量发布和订阅模式主程序生产者消费者测试类 路由模式主程序生产者消费者测试类 主题模式主程序生产者消费者测…...

带你了解DDoS攻击的原理,让你轻松学会DDoS攻击原理及防护措施

DDoS攻击原理是什么? 随着网络时代的到来&#xff0c;网络安全变得越来越重要。在互联网的安全领域&#xff0c;DDoS(Distributed DenialofService)攻击技术因为它的隐蔽性&#xff0c;高效性一直是网络攻击者最青睐的攻击方式&#xff0c;它严重威胁着互联网的安全。接下来的…...

小区物业管理系统-物业管理员页面

小区物业管理系统-物业管理员页面 主页面 添加业主 Public Class PropertyManager_Pro_insertbug:插入&#xff1a;若删除一个&#xff0c;用count就会插入相同的&#xff0c;导致插入错误Dim proprietor As New ProprietorPublic Sub New(s As String)InitializeComponent()E…...

Python数学问题20:高空抛物

1. 问题描述 一球从100米高度自由落下&#xff0c;每次落地后反跳回原高度的一半&#xff1b;再落下&#xff0c;求它在第10次落地时&#xff0c;共经过多米&#xff1f;第10次反弹多高&#xff1f; 2. 实例代码 high 200 total 100 for i in range(10):high / 2total hi…...

SQL Server 执行计划(1)- 概述

在本系列文章中&#xff0c;我们将导航 SQL Server 执行计划的海洋&#xff0c;从定义执行计划的概念开始&#xff0c;遍历执行计划的类型、组件和运算符&#xff0c;分析执行计划&#xff0c;我们将完成如何保存和管理执行计划。 SQL Server 执行计划概述 当你提交一个 T-SQ…...

多域间访问之外部信任

前言&#xff1a;在同一个林内&#xff0c;通过自动建立可传递的&#xff0c;双向的信任关系&#xff0c;可以实现所有域间的相互信任。但是在不同林之间则不会自动建立信任关系&#xff0c;要实现两个林之间的访问需要手工建立信任关系。 林之间的信任关系又可分为外部信任和…...

阿里程序员的Java之路!Redis宕机数据丢失解决方案

二叉树 定义 二叉树是n(n>0)个结点的有限集合&#xff0c;该集合或者为空集&#xff08;称为空二叉树&#xff09;&#xff0c;或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树组成。 图解 二叉树特点 由二叉树定义以及图示分析得出二叉树有以下特点…...

最全面的 Spring 学习笔记

最全面的 Spring 学习笔记...

html基础

文章目录day01_web一、Web前端介绍1. 什么是网页2. 网页的组成3. 开发前的准备二、 HTML语法介绍1. HTML介绍2. 标签3. 使用三、常用标签介绍1. 基本结构解析2. body中常用标签3. 常用结构标签属性和属性值day01_web 一、Web前端介绍 1. 什么是网页 网页是基于浏览器的应用程…...

pt-osc工具原理与实践

MySQL在5.7版本对于online ddl支持的并不是非常优化&#xff0c;比如说将大表int字段类型修改成bigint或者对大表进行字符编码的改造。对于业务来说都是需要停业去处理的&#xff0c;对于高速发展的互联网行业来说&#xff0c;时间就是金钱&#xff0c;所以合理的应用pt-osc工具…...

Ubuntu 20.04下PyCharm配置QtDesigner,PyUIC和Pyrcc

《ubuntu安装配置QtDesigner》...

OpenLayers源码解析8 ol/source/TileWMS.js

ol/source/TileWMS.js父类 ol/source/TileImage-TileImage 主要功能 WMS服务提供的底图图层源。 参数&#xff1a;TileWMS({}) 参数类型说明paramsObject.<string, *>至少需要LAYER参数。STYLE默认是’VERSION默认是‘1.3.0’WIDTH&#xff0c;HEIGHT&#xff0c;BB…...

Python IDE 详细攻略,拿去吧你~

本文介绍了多个 Python IDE&#xff0c;并评价其优缺点 读者可以参考此文列举的 Python IDE 列表&#xff0c;选择适合自己的编辑器 写 Python 代码最好的方式莫过于使用集成开发环境&#xff08;IDE&#xff09;了。它们不仅能使你的工作更加简单、更具逻辑性&#xff0c;还…...

元力参堂:《披荆斩棘的哥哥》一经上线,能否带动芒果TV会员数增长

随着芒果TV《披荆斩棘的哥哥》大热&#xff0c;播放量就占据了综艺热度榜榜首。芒果超媒发布了2021年半年报&#xff0c;公司2021年1-6月实现营业收入78.53亿元&#xff0c;同比增长36.02%。从财报来看&#xff0c;芒果超媒营收的增长&#xff0c;主要还是来源于其主要业务芒果…...

事件循环机制(Event Loop)刨根问底

事件循环是什么&#xff1f; 为什么有事件循环机制 因为js是单线程的&#xff0c;注意&#xff0c;浏览器是多线程的。浏览器只给一个线程给js渲染&#xff0c; 假设是多线程&#xff0c;可能会存在这种情况&#xff1a; 若一个线程要操作dom,另一个线程要删除dom&#xff0c;就…...

反射动态修改注解属性值

注解Two中有two属性表&#xff0c;在TestTwoAnno这个类初始化结束后&#xff0c;修改Two注解的two属性。 import com.enterprise.support.rocketmq.annotation.Two; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Compo…...

SpringBoot - MyBatis-Plus使用详解(一)

1&#xff0c;什么是 MyBatis-Plus&#xff1f; &#xff08;1&#xff09;MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、提高效率而生。我们可以理解为它已经封装好了一些…...

机器学习----支撑向量机(SVM)

SVM 支持向量机&#xff08;Support Vector Machine, SVM&#xff09; 图中是一个样本空间&#xff0c;里面有一些样本点&#xff0c;分成红色和蓝色两类。 逻辑回归是要找到一根决策边界&#xff0c;由决策边界把数据分成两类。但可能存在这样一些数据&#xff08;下图&…...

采坑记录之node-sass

node-sass这货很容易安装失败 下面是node-sass官网给出的对应node.js版本的图 一定要按照node-sass官网给出的对应node.js版本来安装&#xff0c;不然很容易安装失败 下面是sass-loader版本图 我自己安装的是node.js 14.x版本的&#xff0c;对应的node-sass的版本是4.14.x&a…...

Elasticsearch:使用 Debian 软件包安装 Elasticsearch

Elasticsearch 的 Debian 包可以从我们的网站或我们的 APT 仓库下载。 它可用于在任何基于 Debian 的系统上安装 Elasticsearch&#xff0c;例如 Debian 和 Ubuntu。 Elasticsearch 的最新稳定版本可以在下载 Elasticsearch 页面上找到。 其他版本可以在过去的版本页面上找到。…...

ui设计师要懂哪些B端设计原则?

UI设计师是一个非常广泛的职位&#xff0c;它所接触的工作内容是非常多的&#xff0c;其中B端的设计内容就是一种&#xff0c;产品设计对于不同行业、不同公司、不同决策者都会有很大的差异&#xff0c;没有最好的设计原则&#xff0c;只有最适合你产品的原则。今天小编就为大家…...

47. 全排列 II

关上过去和未来的铁门&#xff0c;活在“今天”这个舱室中。 ——《人性的优点》 47. 全排列 II 给定一个可包含重复数字的序列 nums &#xff0c;按任意顺序 返回所有不重复的全排列。 示例 1&#xff1a; 输入&#xff1a;nums [1,1,2] 输…...

全能UI设计师到底需要具备哪些能力呢?

很多0基础或想转行UI设计的小伙伴们&#xff0c;都很想学好UI设计就业&#xff0c;但是&#xff0c;想要成为一名符合目前公司需求的专业UI设计师不简单&#xff0c;不是自学习一下就能上岗胜任工作。当然&#xff0c;如果报班系统学习的话就不会那么难&#xff0c;学习方式不同…...

如何拿到网页源码

Requests库详解 Requests 是用Python语言编写&#xff0c;基于 urllib&#xff0c;采用 Apache2 Licensed 开源协议的 HTTP 库。它比 urllib 更加方便&#xff0c;可以节约我们大量的工作&#xff0c;完全满足 HTTP 测试需求。Requests 的哲学是以 PEP 20 的习语为中心开发的&…...

猫游记页游mysql_5款曾经极其火爆的页游,最后一款90后没听过80后才玩过

几年前的国内游戏市场&#xff0c;页游异军突起&#xff0c;很多页游厂商的利润甚至超过端游厂商&#xff0c;于是游戏市场上迎来了浩浩荡荡的页游时代&#xff0c;今天罗宾就给大家介绍5款曾经极其火爆的页游。1、《街机三国》13年街机三国刚上线的时候&#xff0c;火爆全国&a…...

倾国倾城游戏源码研究

倾国倾城游戏源码研究 最近在研究cocos2d游戏&#xff0c;下载了倾国倾城的源码&#xff0c;这款游戏客户端是cocos2d&#xff0c;服务端是Erlang&#xff0c;游戏各个部分都比较全&#xff0c;比较有学习价值。 下面是相关资料下载地址&#xff1a;http://www.appcome.com/f…...

webpack知识点整理

1、Webpack中loader的作用/ loader是什么? Loader 是webpack中提供了一种处理多种文件格式的机制,因为webpack只认识JS和JSON,所以Loader相当于翻译官,将其他类型资源进行预处理。 loader文件加载器,能够加载资源文件,并对这些文件进行一些处理,诸如编译压缩等 处理一…...

React-signature-phone 移动端电子签名

1、安装 npm install react-signature-phone --save 2、引入 import SignaturePhone from react-signature-phone; 3、使用 <SignaturePhone ref"mySignature" height{150} /> 4、方法 //定义变量控制dom let signature this.refs.mySignature;//取值 …...

电子签名(vue)

<template><div class"signatureBox"><div class"visaDetailTop"><p><button class"btnBack" click"backHome"></button><img src"static/imagesWbe/leftIcon.png" style"hei...

纸质签名转变为电子签名

在电子签名流行的早期&#xff0c;为了实现有一个漂亮的电子签名&#xff0c;很多人采用在纸张上手写签名&#xff0c;然后拍照形成图片&#xff0c;利用图片粘贴的方式在电子文档中留下手写签名。 纸质签名拍照无法律效力 随着电子合同/电子文件的大量应用&#xff0c;我们需…...

做移动端电子签名发现canvas的 一些坑

做移动端收集电子签名项目的时候发现了一些坑&#xff1a; 1. 移动端的手指按下、移动、抬起事件跟PC端的鼠标按下、移动、弹起事件是不一样的 2. canvas它的属性宽高和样式宽高是不一样的&#xff0c;通过CSS来设置canvas的宽高会导致一些奇怪的问题 3. canvas的间距&#xff…...

opencv入门笔记(二)

目录图像运算位运算位与运算位或运算取反运算异或运算位运算特点示例&#xff1a;位运算示例加法运算示例&#xff1a;查看三种加法运算的区别滤波器均值滤波中值滤波高斯滤波双边滤波示例&#xff1a;查看多种滤波器的处理效果视频处理示例&#xff1a;打开笔记本电脑内置摄像…...

JS实现电子签名

效果图 代码实现 <template> <section class"signature"> <div class"signatureBox"> <div class"canvasBox" ref"canvasHW"> <canvas touchstarttouchStart …...

STM32---设备电子签名

简介 电子签名存储在 Flash 区。可以使用 JTAG/SWD 或 CPU 对其进行读取。它包含出厂前编程的标识数据&#xff0c;这些标识数据允许用户固件或其它外部设备将其接口与 STM32F4xx 微控制器的特性自动匹配。 唯一设备 ID 寄存器&#xff08;96 位&#xff09; 唯一设备标识符…...

客户端负载均衡与服务端负载均衡对比

客户端服务端开发团队灵活修改运维人员把控修改运维成本低&#xff0c;开发人员直接可以修改运维成本高强依赖注册中心不依赖注册中心微服务框架tomcat等传统应用 服务端负载均衡 负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的重要手段之一&#xff0c;但是一般情…...

TCP接入的负载均衡架构

一、web-server的负载均衡 互联网架构中&#xff0c;web-server接入一般使用nginx来做反向代理&#xff0c;实施负载均衡。整个架构分三层&#xff1a; 上游调用层&#xff0c;一般是browser或者APP&#xff1b; 中间反向代理层&#xff0c;nginx&#xff1b; …...

Nacos负载均衡

常见的负载均衡策略 随机、hash、轮询、权重、最小连接数、最快响应速度 适用场景 1、在短连接中 因为连接快速建立销毁 因为数据延时容易造成堆积效应&#xff0c; 随机、hash、轮询、权重 四种方式大致能够保持整体是均衡的&#xff0c;服务端重启也不会影响整体均衡 2、最小…...

带你玩转序列模型之seq2seq模型定向(集束)搜索

目录 一.基础模型 二.选择最可能的句子 三.定向搜索 四.改进定向搜索 五.定向搜索的误差分析 一.基础模型 在这一周&#xff0c;你将会学习seq2seq&#xff08;sequence to sequence&#xff09;模型&#xff0c;从机器翻译到语音识别&#xff0c;它们都能起到很大的作用…...

zookeeper实现负载均衡

解析&#xff1a;首先会员服务在注册中心上注册&#xff0c;这个时候就在zookeeper上生成几个临时节点&#xff0c;节点名是/member/8080和/member/8081,值是127.0.0.1:8080,127.0.0.1:8081&#xff08;zookeeeper每个节点都有节点名和节点值&#xff09;&#xff0c;/member是…...

Web负载均衡的几种实现方式

摘要&#xff1a; 负载均衡(Load Balance)是集群技术&#xff08;Cluster&#xff09;的一种应用。负载均衡可以将工作任务分摊到多个处理单元&#xff0c;从而提高并发处理能力。目前最常见的负载均衡应用是Web负载均衡。根据实现的原理不同&#xff0c;常见的web负载均衡技术…...