首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

STM32高级开发——链接器与启动文件

链接器 链接的过程 首先,想要明白链接器的工作原理我们还是要来深入的看看整个编译过程中具体的方式和原理。 我想大家都知道高级语言出现之前我们所用的汇编语言是除机器码外最接近硬件的语言。...由此,我们就可以理解C语言被编译为二进制执行文件的过程了,首先每个C文件都被编译为了.o的,带有未解析地址的中间文件,而后工具链的链接器将所有C文件的.o文件链接将他们有序的排列到储存中,并将他们个个函数处的地址解析使得其他不同地方的函数能够跳转到该函数的入口地址...链接器就是用来做这个工作的,当然不只是gcc的链接器,世上所有c程序的编译工具链应该都是以这种理念设计的。。...工具链中链接器的用法 在实际中,链接器的执行程序实际上是arm-none-eabi-ld这个文件,但是我再实际的编写过程中在遇到.c和.cpp文件混合的工程中,ld会在链接过程中报错。...ld文件 在链接的过过程中与编译过程相比其中显著的与编译指令不同的便是 -T xx.ld。 在这里 -T xx.ld实际上是调用了一个.ld的文件,那么.ld文件是做什么的呢?

95630
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    软链接与硬链接的区别

    由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性: 文件有相同的 inode 及 data block; 只能对已存在的文件进行创建; 不能交叉文件系统进行硬链接的创建...; 不能对目录进行创建,只可对文件创建; 删除一个硬链接文件并不影响其他有相同 inode 号的文件。...软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。...因此软链接的创建与使用没有类似硬链接的诸多限制: 软链接有自己的文件属性及权限等; 可对不存在的文件或目录创建软链接; 软链接可交叉文件系统; 软链接可对文件或目录创建; 创建软链接时,链接计数 i_nlink...不会增加; 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。

    1.7K30

    17-MyBatis映射文件与核心配置文件深入

    MyBatis映射文件深入 动态sql 可以看到,在之前的映射文件中,所有sql语句都是写死的,并不会根据我传入参数的不同进行区分,但在实际开发过程中,可能需要执行sql语句查询前先进行逻辑判断或其他操作...,对参数进行简单的判断 例如下面的简单情况,我们在映射文件中写明了查询的条件,需要你User对象传入三个参数 与原语句拼接后得到SELECT * FROM user WHERE id IN (1,2,3) sql片段的抽取 对于配置文件中高度重复的sql语句片段...,这些基本数据类型的转换MyBatis已经有自己默认的类型转换器,一般情况下不需要我们处理,但当我们要处理自己定义的类型或MyBaitis没有默认处理的类型时,就需要自己定义类型转换器(例如将日期类型转换为毫秒值存入数据库...在MyBatis核心配置文件中配置转换器 <!

    41310

    文件的软链接和硬链接

    引言 在 Linux 文件系统中,文件名与文件数据的关系并不像表面看起来那样简单。真正标识文件的是 inode(索引节点),而文件名只是 inode 的别名。...这种设计衍生出了两种特殊的文件关联方式:硬链接(Hard Link) 和 软链接(Symbolic Link,又称软链接)。本文将深入探讨它们的原理、区别及实际应用。...硬链接(Hard Link) 什么是硬链接? 硬链接是多个文件名指向同一个 inode 的映射关系。...软硬链接对比 特性 硬链接 软链接 inode 与原文件相同 独立 inode 跨文件系统 ❌ 不支持 ✅ 支持 指向目录 ❌ 不允许 ✅ 允许 原文件删除后 仍可访问(链接数减 1) 失效(悬空链接)...存储内容 直接映射 inode 存储目标路径字符串 文件大小 与原文件相同 等于路径字符串长度 应用场景 备份、文件系统结构 快捷方式、动态引用 文件的时间戳 Linux 文件有三个关键时间戳: Access

    10510

    Linux 文件查找与链接命令详解

    在日常使用 Linux 的过程中,我们经常需要查找文件、快捷操作命令以及创建文件链接来提高效率。...本文将详细介绍以下几个常用的命令: 文件查找命令:find、locate 和 which 别名命令:alias 软链接与硬链接命令:ln 文件查找 1. find 命令 find 是一个功能强大的文件搜索命令...: echo "alias ll='ls -l'" >> ~/.bashrc source ~/.bashrc 软链接与硬链接 Linux 的链接分为软链接(符号链接)和硬链接。...软链接类似于 Windows 的快捷方式,而硬链接是同一个文件的不同名字。 1. ln 命令创建硬链接 硬链接与原文件共享相同的 inode 编号,删除任意一个文件都不会影响另一个文件。...ln [源文件] [目标文件] # 基本语法 ln file1 file1_hard # 创建硬链接 ls -li # 查看硬链接的 inode 编号 2. ln -s 命令创建软链接 软链接指向文件的路径

    14910

    【Linux课程学习】:站在文件系统之上理解:软硬链接,软硬链接的区别

    如果有两个文件指向同一个inode,当删除一个文件时,断开了该文件名与inode的关系。在该目录下的文件项中就没有改文件名与inode的对应关系。...1.4文件硬链接数: 表示该文件的inode与几个文件名直接有联系。新建一个目录的硬链接数是2,普通文件是1,为什么?...下面表示我们新建硬链接以后,该文件的inode和我们指向文件的inode是一样的,本质是建立文件与已经存在的文件的inode之间的映射关系,所以硬链接在磁盘上没有新建文件。...3.2.2对于根目录的。。 更目录/没有上一级目录,他的。。还是指向自己。Linux操作系统为了让根目录和其他目录一样,没有区别。所以更目录中的隐藏文件。。虽然指向自己,但是它的硬链接数不会+1。...硬链接就是去建立与inode的关系,所以如果跨文件系统创建文件系统,就会出错。 4.2内容方面: 硬链接直接指向文件的数据,而不是文件名或路径。软连接的内容保存的是目标文件的路径。

    14310

    标准IO与文件IO 的区别

    也就是一般所说的低级I/O——操作系统提供的基本IO服务,与os绑定,特定于linix或unix平台。...二、二者的区别: 文件I/O 又称为低级磁盘I/O,遵循POSIX相关标准。任何兼容POSIX标准的操作系统上都支持文件I/O。标准I/O被称为高级磁盘I/O,遵循ANSI C相关标准。...通过文件I/O读写文件时,每次操作都会执行相关系统调用。这样处理的好处是直接读写实际文件,坏处是频繁的系统调用会增加系统开销,标准I/O可以看成是在文件I/O的基础上封装了缓冲机制。...先读写缓冲区,必要时再访问实际文件,从而减少了系统调用的次数。 文件I/O中用文件描述符表现一个打开的文件,可以访问不同类型的文件如普通文件、设备文件和管道文件等。...三、、系统调用与库函数: 上面我们一直在讨论文件I/O与标准I/O的区别,其实可以这样说,文件I/O是系统调用、标准I/O是库函数 系统调用 操作系统负责管理和分配所有的计算机资源。

    1.3K21

    关于链接文件的探讨

    探讨下硬链接,有点类似于git的存储方式了,你我各有一份共同修改,你挂了我还有 ?...比较有意思的是,只删除原文件,并没有删除对应的硬链接,软链接依然可以使用(不会像Win里面找不到目标啥的) ? 这个是原文件删除,硬链接没删除的情况 ? 这个是原文件和硬链接都删除的情况 ?.../p/4522983.html#linux Linux基础 1.Linux基础学习 By dnt http://www.cnblogs.com/dunitian/p/4822807.html 2.关于链接文件的探讨...html 基础技能 1.Hyper-v 安装CentOS 7 (其他虚拟机一样参考) http://www.cnblogs.com/dunitian/p/4976077.html 2.CentOS服务器网络配置...(动态+静态) http://www.cnblogs.com/dunitian/p/4975830.html 3.Xshell 连接CentOS服务器解密 http://www.cnblogs.com/

    965100

    hpp头文件与h头文件的区别 C++中的.hpp文件

    hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。...而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库...hpp的优点不少,但是编写中有以下几点要注意: 1、是Header Plus Plus 的简写。 2、与*.h类似,hpp是C++程序头文件 。 3、是VCL专用的头文件,已预编译。...由于hpp本质上是作为.h被调用者include,所以当hpp文件中存在全局对象或者全局函数,而该hpp被多个调用者include时,将在链接时导致符号重定义错误。...someMethod(B b); }; class B{ public : void someMethod(A a); }; 在hpp场景中,由于定义与实现都已经存在于一个文件

    4.5K20

    Linux文件的软链接和硬链接

    只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。...1.3软链接 另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。...1.4硬链接与拷贝的区别 硬链接只是通过文件的别名指向了文件的inode(索引节点),inode是操作系统指定文件的依据,每个文件有且只有一个inode,所以操作硬链接就是操作源文件。...f2与原文件f1的inode节点相同,均为9797648,然而符号连接文件的inode节点不同。...(5)硬链接是文件的不同名称,软连接是文件名的超链接,文件名不存在,超链接就失效了。

    7.7K01

    iOS的文件内存映射——mmap

    而mmap将磁盘上文件的地址信息与进程用的虚拟逻辑地址进行映射,建立映射的过程与普通的内存读取不同:正常的是将文件拷贝到内存,mmap只是建立映射而不会将文件加载到内存中。...这样做的注意事项: 1、牺牲较大的虚拟内存,映射区域有多大就需要虚拟内存有多大;(故而太大的文件不适合映射整个文件,32位虚拟内存最大是4GB,可以只映射部分) 2、因为映射有额外的性能消耗,所以适用于频繁读操作的场景...:映射类型,通常是文件和共享类型; fd:文件句柄; off_toffset:被映射对象的起点偏移; 用官网的代码做参考,写了一个读写的例子: #import "ViewController.h"...Mapped的意思是使用mmap,这个ifSafe是什么意思呢?和另外一个参数NSDataReadingMappedAlways有什么区别?...总结 mmap就是文件的内存映射,通常读取文件是将文件读取到内存,会占用真正的物理内存;而mmap是用进程的内存虚拟地址空间去映射实际的文件中,这个过程由操作系统处理。

    2.7K10

    Linux中的链接文件_软链接和硬链接

    一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。...硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode table; 不能链接目录。...软链接:与硬链接不同,软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。...二、两者的区别 硬链接记录的是目标的inode,软链接记录的是目标的路径。 软链接就像是快捷方式,而硬链接就像是备份。 软链接可以做跨分区的链接,而硬链接由于inode的缘故,只能在本分区中做链接。...所以,软链接的使用频率要高很多。 三、如何建立软链接和硬链接 ln(link)命令的格式:ln [-s] [来源文件] [目的文件]。

    6.6K30

    Linux中的链接文件_软链接和硬链接

    一、链接文件介绍 Linux操作系统中的“链接文件”分为硬链接(hard link)和软链接(symbolic link)。两种链接的本质区别在于inode。...硬链接有两个限制: 不能跨文件系统,因为不同的文件系统有不同的inode table; 不能链接目录。...软链接:与硬链接不同,软链接是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。...二、两者的区别 硬链接记录的是目标的inode,软链接记录的是目标的路径。 软链接就像是快捷方式,而硬链接就像是备份。 软链接可以做跨分区的链接,而硬链接由于inode的缘故,只能在本分区中做链接。...所以,软链接的使用频率要高很多。 三、如何建立软链接和硬链接 ln(link)命令的格式:ln [-s] [来源文件] [目的文件]。

    6.9K30

    etcprofile,etcbashrc等文件的区别与作用

    当我们在做一些与bash相关的操作时,比如设置别名、登录启动项等,多多少少都会与下面几个文件打交道,用的时候一查,然后又忘了。好记性不如烂笔头,下面老高就帮你理一理这些文件到底是干啥的。...老高翻译: 当一个非登陆shell运行,如果对应用户的~/.bashrc存在,bash首先会读取~/.bashrc,有个--norc option能阻止读取,还有个--rcfile的选项可以强制读取指定文件...综上: ~/.bashrc与/etc/bashrc、~/.bash_profile与/etc/profile的关系一样,都是一个针对某个用户,一个针对全局设置。读取的时候也是全局优先。...一般把alias和function一类的放到bashrc或~/.bashrc中。 而把export更多的放在profile文件中。...的最佳替代品; 如果还是钟情与bash,那么老高推荐你安装bash-completion,自动补全的功能很好用!

    60330

    【Windows】文件类型与链接类型的默认程序

    DropTarget 条目包含对象的 CLSID, (通常是本地服务器,而不是实现 IDropTarget 的进程内服务器) 。...可直接从 Internet 打开文档的应用程序(如 Web 浏览器和媒体播放器)应设置此项。...例如,如果应用程序设置了此项,并且用户右键单击存储在 Web 服务器上的文件,则 Open 谓词将可用。 否则,用户必须下载文件并打开本地副本。...在 Windows 7 中,它指示应用程序可以理解传递给它的任何 http 或 https URL,而无需提供缓存文件名。 此注册表项与 SupportedProtocols 项相关联。...windows系统推荐我们分三步进行 1、RegisteredApplications 这一步用来当windows搜索某种文件类型或链接类型时,将自身加入到这个搜索列表中,主要是用来映射真正的应用,具体路径是

    50510

    java nio 中ByteBuffer 、内存文件映射的含义与使用

    内存映射文件在windows 系统与linux系统中都有使用,与虚拟内存有些类似,虚拟内存是指当主存(内存)容量不够使用一部分外存(磁盘)充当主存,内存映射文件使用内存虚拟空间地址与磁盘文件建立一种映射关系...,使得应用程序直接访问内存映射文件与同访问真实的磁盘文件一样操作,在正常模式下,应用程序对磁盘文件的访问通常需要经过一下步骤:应用程序空间->内核空间->磁盘文件,那么使用内存映射文件访问流程:应用程序...->磁盘文件,内存映射文件持有磁盘地址,在访问时通过地址映射转换直接访问磁盘空间,不需要经过内核空间到用户空间的传输,需要理解的内存映射文件对于应用程序或者操作系统都是透明的,二者均可访问。...大文件传输: 按照常理文件传输流程: 磁盘-> 内核空间->用户空间->内核空间->磁盘,中间进行多次数据的拷贝,使用内存文件映射方式传输,两个进程都可访问内存映射文件,使得在文件传输变为内存映射文件的传输...使用方式java.nio.channels.FileChannel.transferTo方法,FileChannel表示文件的通道,类似与输入输出流,输入输出流只能是单向通道,但是FileChannel

    98220

    MyBatis 映射文件的解析过程(一)

    概述 前面几篇我们介绍了MyBatis中配置文件的解析过程。今天我们接着来看看MyBatis的另外一个核心知识点---映射文件的解析。本文将重点介绍节点和的解析。...前置说明 Mapper 映射文件的解析是从XMLConfigBuilder类的对mappers 节点解析开始。mappers节点的配置有很多形式,如下图所示: 映射器解析器。...方法与XMLMapperBuilder的parse方法逻辑上略有不同,主要体现在对节点的解析上。...: 按先进先出的策略淘汰缓存项 缓存的容量为512个对象引用 缓存每隔60秒刷新一次 缓存返回的对象是写安全的,即在外部修改对象不会影响到缓存内部存储对象 这个简单语句的效果如下: 映射语句文件中的所有

    50430
    领券