armlink 用法详解

2023-05-16

映像文件(image):是指一个可执行文件,在执行的时候被加载到处理器中。一个映像文件有多个线程。它是ELF(Executable and linking format)格式的。
段(Section):描述映像文件的代码或数据块。
RO:是Read-only 的简写形式。
RW:是Read-write.的简写形式。
ZI:是Zero-initialized 的简写形式。
输入段(input section):它包含着代码,初始化数据或描述了在应用程序运行之前必须要初始化为0 的一段内存。
输出段(output section):它包含了一系列具有相同的RO,RW 或ZI 属性的输入段。
域(Regions):在一个映像文件中,一个域包含了1 至3 个输出段。多个域组织在一起,就构成了最终的映像文件。
Read Only Position Independent(ROPI):它是指一个段,在这个段中代码和只读数据的地址在运行时候可以改变。
Read Write Position Independent(RWPI):它是指一个段,在该段中的可读/写的数据地址在运行期间可以改变。
加载时地址:是指映像文件位于存储器(在该映像文件没有运行时)中的地址。
运行时地址:是指映像文件在运行时的地址。
下面介绍一下armlink 命令的语法
完整的连接器命令语法如下:
armlink [-help] [-vsn] [-partial] [-output file] [-elf] [-reloc][-ro-base address]
[-ropi]
[-rw-base address] [-rwpi] [-split]
[-scatter file][-debug|-nodebug][-remove?RO/RW/ZI/DBG]|-noremove] [-entry
location ]
[-keep section-id] [-first section-id] [-last section-id] [-libpath pathlist]
[-scanlib|-noscanlib] [-locals|-nolocals] [-callgraph] [-info topics] [-map]
[-symbols] [-symdefs file] [-edit file] [-xref] [-xreffrom object(section)] [-xrefto
object(section)] [-errors file] [-list file] [-verbose]
[-unmangled |-mangled] [-match crossmangled][-via file] [-strict]
[-unresolved symbol][-MI|-LI|-BI] [input-file-list]
上面各选项的含义分别为:
-help 这个选项会列出在命令行中常用的一些选项操作。
-vsn 这个选项显示出所用的armlink 的版本信息。
-partial 用这个选项创建的是部分链接的目标文件而不是可执行映像文件。
-output file 这个选项指定了输出文件名,该文件可能是部分链接的目标文件,也可能是
可执行映像文件。如果输出文件名没有特别指定的话,armlink 将使用下面的默认:
如果输出是一个可执行映像文件,则生成的输出文件名为__image.axf;
如果输出是一个部分链接的目标文件,在生成的文件名为__object.o;
如果没有指定输出文件的路径信息,则输出文件就在当前目录下生成。如果指定了路径信息,则所指定的路径成为输出文件的当前路径。
-elf
这个选项生成ELF 格式的映像文件,这也是armlink 所支持的唯一的一种输出格式,这是默认选项。
-reloc
这个选项生成可重定址的映像。
一个可重定址的映像具有动态的段,这个段中包含可重定址信息,利用这些信息可以在链接后,进行映像文件的重新定址;
-reloc,-rw-base 一起使用,但是如果没有-split 选项,链接时会产生错误。
-ro-base address
这个选项将包含有RO(Read-Only 属性)输出段的加载地址和运行地址设置为address,该地址必须是字对齐的,如果没有指定这个选项,则默认的RO 基
地址值为0x8000。
-ropi
这个选项使得包含有RO 输出段的加载域和运行域是位置无关的。如果该选项没有使用,则相应的域被标记为绝对的。通常每一个只读属性的输入段必须是只读位置无关的。如果使用了这个选项,armlink 将会进行以下操作:
检查各段之间的重定址是否有效;
确保任何由armlink 自身生成的代码是只读位置无关的。
这里希望读者注意的是,ARM 工具直到armlink 完成了对输入段的处理后,才能够决定最终的生成映像是否为只读位置无关的。这就意味着 ,即使为编译器和汇编器指定了ROPI 选项,armlink 也可能会产生ROPI 错误信息。
-rw-base address
这个选项设置包含RW(Read/Write 属性)输出段的域的运行时地址,该地址必须是字对齐的。
如果这个选项和-split 选项一起使用,将设置包含RW 输出段的域的加载和运行时地址都设置在address 处。
-rwpi
这个选项使得包含有RW 和ZI(Zero Initialization,初始化为0)属性的输出段的加载和运行时域为位置无关的。如果该选项没有使用,相应域标记为绝对的。
这个选项要求-rw-base 选项后有值,如果-rw-base 没有指定的话,默认其值为0,即相当于-rw-base 0。通常每一个可写的输入段必须是可读/ 可写的位置无关的。
如果使用了该选项,armlink 会进行以下的操作:
检查可读/可写属性的运行域的输入段是否设置了位置无关属性;
检查在各段之间的重定址是否有效;
生成基于静态寄存器sb 的条目,这些在RO 和RW 域被拷贝和初始化的时候会用到。
编译器并不会强制可写的数据一定要为位置无关的,这就是说,即使在为编译器和汇编器指定了RWPI 选项,armlink 也可能生成数据不是RWPI 的信息。
-split
这个选项将包含RO 和RW 属性的输出段的加载域,分割成2 个加载域。一个是包含RO 输出段的加载域,默认的加载地址为0x8000,但是可以用-ro-base
选项设置其他的地址值,另一个加载域包含RO 属性的输出段,由-rw-base 选项指定加载地址,如果没有使用-rw-base 选项的话,默认使用的是-rw-base 0。
-scatter file
这个选项使用在file 中包含的分组和定位信息来创建映像内存映射。
注意, 如果使用了该选项的话, 必须要重新实现堆栈初始化函数__user_initial_stackheap()。
-debug
这个选项使输出文件包含调试信息,调试信息包括,调试输入段,符号和字符串表。这是默认的选项。
-nodebug
这个选项使得在输出文件中不包含调试信息。生成的映像文件短小,但是不能进行源码级的调试。armlink 对在输入的目标文件和库函数中发现的任何调试输入段都不予处理,当加载映像文件到调试器中的时候,也不包含符号和字符串信息表。这个选项仅仅是对装载到调试器的映像文件的大小有影响,但是对要下载到目标板上的二进制代码的大小没有任何影响。
如果用armlink 进行部分链接生成目标文件而不是映像文件,则虽然在生成的目标文件中不含有调试输入段,但是会包含符号和字符串信息表。
这里特别请读者注意的是:
如果要在链接完成后使用fromELF 工具的话,不可使用-nodebug 选项,这是因为如果生成的映像文件中不包含调试信息的话,则有下面的影响:
fromELF 不能将映像文件转换成其他格式的文件;
fromELF 不能生成有意义的反汇编列表。
-remove (RO/RW/ZI/DBG)
使用这个选项会将在输入段未使用的段从映像文件中删除。如果输入段中含有映像文件入口点或者该输入段被一个使用的段所引用,则这样的输入段会当作已使用的段。
在使用这个选项时候要注意,不要删除异常处理函数。使用-keep 选项来标识异常处理函数,或用ENTRY 伪指令标明是入口点。
为了更精确的控制删除未使用的段,可以使用段属性限制符。可以使用以下的段属性限制符:
RO
删除所有未使用的RO 属性的段;
RW
删除所有未使用的RW 属性的段;
ZI
删除所有未使用的ZI 属性的段;
DBG
删除所有未使用的DEBUG 属性的段。
这些限制符出现的顺序是任意的,但是它们必须要有”( )”括住,多个限制符之间要用符号”/”进行间隔。ADS 软件中默认选项是-remove (RO/RW/ZI/DBG)。
如果没有指定段属性限制符,则所有未使用的段都会被删除。因为-remove就等价于-remove(RO/RW/ZI/DBG)选项。
-noremove
这个选项保留映像文件中所有未被使用的段。
-entry location
这个选项指定映像文件中唯一的初始化入口点。一个映像文件可以包含多个入口点,使用这个命令定义的初始化入口点是存放在可执行文件的头部,以供加载程序加载时使用。当一个映像文件被装载时,ARM 调试器使用这个入口点地
址来初始化PC 指针。初始化入口点必须满足下面的条件:
映像文件的入口点必须位于运行域内;
运行域必须是非覆盖的,并且必须是固定域(就是说,加载域和运行域的地址相同)。
在这里可以用以下的参数代替location 参数:
1. 入口点地址:这是一个数值,例如-entry 0x0;
2. 符号:该选项指定映像文件的入口点为该符号所代表的地址处,比如:
-entry int_handler
表示程序入口点在符号int_handler 所在处。
如果该符号有多处定义存在,armlink 将产生出错信息。
offset+object(section):
该选项指定在某个目标文件的段的内部的某个偏移量处为映像文件的入口地址,例如:
-entry 8+startup(startupseg)
如果偏移量值为0,可以简写成object(section),如果输入段只有一个,则可以简化为object。
-keep section-id
使用该选项,可以指定保留一个输入段,这样的话,即使该输入段没有在映像文件中使用,也不会被删除。参数section-id 取下面一些格式:
1.symbol
该选项指定定义symbol 的输入段不会在删除未使用的段时被删除。如果映像文件中有多处symbol 定义存在,则所有包含symbol 定义的输入段都不会被删除。例如:
-keep int_handler
则所有定义int_handler 的符号的段都会保留,而不被删除。
为了保留所有含有以_handler 结尾的符号的段,可以使用如下的选项:
-keep *_handler
2.object(section)
这个选项指定了在删除未使用段时,保留目标文件中的section 段。输入段和目标名是不区分大小写的,例如,为了在目标文件vectors.o 中保留vect 段,
使用:
-keep vectors.o(vect)
为了保留vectors.o 中的所有以vec 开头的段名,可以使用选项:
-keep vectors.o(vec*)
3.object
这个选项指定在删除未使用段时,保留该目标文件唯一的输入段。目标名是不区分大小写的,如果使用这个选项的时候,目标文件中所含的输入段不止一个的话,armlink 会给出出错信息。比如,为了保留每一个以dsp 开头的只含有唯一输入段的目标文件,可以使用如下的选项:
-keep dsp*.o
-first section-id
这个选项将被选择的输入段放在运行域的开始。通过该选项,将包含复位和中断向量地址的段放置在映像文件的开始,可以用下面的参数代替section-id:
1.symbol
选择定义symbol 的段。禁止指定在多处定义的symbol,因为多个段不能同时放在映像文件的开始。
2.object(section)
从目标文件中选择段放在映像文件的开始位置。在目标文件和括号之间不允许存在空格,例如
-first init.o(init)
3.object
选择只有一个输入段的目标文件。如果这个目标文件包含多个输入段,armlink 会产生错误信息。用这个选项的例子如下:
-first init.o
这里希望读者注意的是:
使用-first 不能改变在域中按照RO 段放在开始,接着放置RW 段,最后放置ZI 段的基本属性排放顺序。如果一个域含有RO 段,则RW 或ZI 段就不能放在映像文件的开头。类似地,如果一个域有RO 或RW 段,则ZI 段就不能放在文件开头。
两个不同的段不能放在同一个运行时域的开头,所以使用该选项的时候只允许将一个段放在映像文件的开头。
-last section-id
这个选项将所选择的输入段放在运行域的最后。例如,用这个选项能够强制性的将包含校验和的输入段放置在RW 段的最后。使用下面的参数可以替换section-id。
1. symbol
选择定义symbol 的段放置在运行域的最后。不能指定一个有多处定义的symbol。使用该参数的例子如下:
-last checksum
2. object(section)
从目标文件中选择section 段。在目标文件和后面的括号间不能有空格,用该参数的例子为:
-last checksum.o(check)
3. object
选择只有一个输入段的目标,如果该目标文件中有多个输入段,armlink 会给出出错信息。
和-first 选项一样,需要读者注意的是;
使用-last 选项不能改变在域中将RO 段放在开始,接着放置RW 段,最后放置ZI 段的输出段基本的排放顺序。如果一个域含有ZI 段,则RW 段不能放在最后,如果一个域含有RW 或ZI 段,则RO 段不能放在最后。
在同一个运行域中,两个不同的段不能同时放在域的最后位置。
-libpath pathlist
这个选项为ARM 标准的C 和C++库指定了搜索路径列表。
注意,这个选项不会影响对用户库的搜索路径。
这个选项覆盖了环境变量ARMLIB 所指定的路径。参数pathlist 是一个以逗号分开的多个路径列表,即为path1, path2,... pathn,这个路径列表只是用来搜索要用到的ARM 库函数。默认的,对于包含ARM 库函数的默认路径是由环境变量ARMLIB 所指定的。
-scanlib
这个选项启动对默认库(标准ARM C 和C++库)的扫描以解析引用的符号。
这个选项是默认的设置。
-noscanlib
该选项禁止在链接时候扫描默认的库。
-locals
这个选项指导链接器在生成一个可执行映像文件的时候,将本地符号添加到输出符号信息表中。该选项是默认设置。
-nolocals
这个选项指导链接器在生成一个可执行映像文件的时候,不要将本地符号添加到输出符号信息表中。如果想减小输出符号表的大小,可以使用该选项。
-callgraph
该选项创建一个HTML 格式的静态函数调用图。这个调用图给出了映像文件中所有函数的定义和引用信息。对于每一个函数它列出了:
1. 函数编译时候的处理器状态(ARM 状态还是Thumb 状态);
2. 调用func 函数的集合;
3. 被func 调用的函数的集合;
4. 在映像文件中使用的func 寻址的次数。
此外,调用图还标识了下面的函数:
1. 被interworking veneers 所调用的函数;
2. 在映像文件外部定义的函数;
3. 允许未被定义的函数(以weak 方式的引用);
静态调用图还提供了堆栈使用信息,它显示出了:
1. 每个函数所使用的堆栈大小;
2. 在全部的函数调用中,所用到的最大堆栈大小。
-info topics
这个选项打印出关于指定种类的信息,这里的参数topics 是指用逗号间隔的类型标识符列表。类型标识符列表可以是下面所列出的任意一个:
1. sizes
为在映像文件中的每一个输入对象和库成员列出了代码和数据(这里的数据包括,RO 数据,RW 数据,ZI 数据和Debug 数据)的大小;
2. totals
为输入对象文件和库,列出代码和数据(这里的数据包括,RO 数据,RW 数据,ZI 数据和Debug 数据) 总的大小;
3. veneers
给出由armlink 生成的veneers 的详细信息;
4. unused
列出由于使用-remove 选项而从映像文件中被删除的所有未使用段。
注意:在信息类型标识符列表之间不能存在空格,比如可以输入-info sizes,totals
但是不能是-info sizes, totals(即在逗号和totals 之间有空格是不允许的)-map
这个选项创建映像文件的信息图。映像文件信息图包括映像文件中的每个加载域,运行域和输入段的大小和地址,这里的输入段还包括调试信息和链接器产生的输入段。
-symbols
这个选项列出了链接的时候使用的每一个局部和全局符号。该符号还包括链接生成的符号。
-symdefs file
这个选项创建一个包含来自输出映像文件的全局符号定义的符号定义文件。默认的,所有的全局符号都写入到符号定义文件中。如果文件file 已经存在,链接器将限制生成在已存在的symdefs 文件中已列出的符号。
如果文件file 没有指明路径信息,链接器将在输出映像文件的路径搜索文件。如果文件没有找到,就会在该目录下面创建文件。
在链接另一个映像文件的时候,可以将符号定义文件作为链接的输入文件。
-edit file
这个选项指定一个steering 类型的文件,该文件包含用于修改输出文件中的符号信息表的命令。可以在steering 文件中指定具有以下功能的命令:
隐藏全局符号。使用该选项可以在目标文件中隐藏指定的全局符号。
重命名全局符号。使用这个选项可以解决符号命名冲突的现象。
-xref
该选项列出了在输入段间的所有交叉引用。
-xreffrom object(section)
这个选项列出了从目标文件中的输入段对其他输入段的交叉引用。如果想知道某个指定的输入段中的引用情况,就可以使用该选项。
-xrefto object(section)
该选项列出了从其他输入段到目标文件输入段的引用。
-errors file
使用该选项会将诊断信息从标准输出流重定向到文件file 中。
-list file
该选项将-info,-map,-symbols,-xref,-xreffrom 和 –xrefto 这几个选项的输出重新定向到文件file 中。
如果文件file 没有指定路径信息,就会在输出路径创建该文件,该路径是输出映像文件所在的路径。
-verbose
这个选项将有关链接操作的细节打印出来,包括所包括的目标文件和要用到的库。
-unmangled
该选项指定链接器在由xref,-xreffrom,-xrefto,和-symbols 所生成的诊断信息中显示出unmangled C++符号名。
如果使用了这个选项,链接器将unmangle C++符号名以源码的形式显示出来。这个选项是默认的。
-mangled
这个选项指定链接器显示由-xref,-xreffrom,-xrefto,和-symbols 所产生的诊断信息中的mangled C++符号名。如果使用了该选项,链接器就不会unmangle C++符号名了。符号名是按照它们在目标符号表中显示的格式显示的。
-via file
该选项表示从文件file 中读取输入文件名列表和链接器选项。
在armlink 命令行可以输入多个-via 选项,当然,-via 选项也能够不含在一个via 文件中。
-strict
这个选项告诉链接器报告可能导致错误而不是警告的条件。
-unresolved symbol
这个选项将未被解析的符号指向全局符号symbol。Symbol 必须是已定义的全局符号,否则,symbol 会当作一个未解析的符号,链接将以失败告终。这个选项在自上而下的开发中尤为有用,在这种情况下,通过将无法指向相应函数的引用指向一个伪函数的方法,可以测试一个部分实现的系统。
该选项不会显示任何警告信息。
input-file-list
这是一个以空格作为间隔符的目标或库的列表。
有一类特殊的目标文件,即symdef 文件,也可以包含在文件列表中,为生成的映像文件提供全局的symbol 值。
在输入文件列表中有两种使用库的方法。
1. 指定要从库中提取并作为目标文件添加到映像文件中的特定的成员。
2. 指定某库文件,链接器根据需要从其中提取成员。
armlink 按照以下的顺序处理输入文件列表:
1. 无条件的添加目标文件
2. 使用匹配模式从库中选择成员加载到映像文件中去。例如使用下面的命令:
armlink main.o mylib(stdio.o) mylib(a*.o).
将会无条件的把mylib 库中所有的以字母a 开头的目标文件和stdio.o 在链接的时候链接到生成的映像文件中去。
3. 添加为解析尚未解析的引用的库到库文件列表。

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

armlink 用法详解 的相关文章

  • 进销存小程序(一)项目整体功能和设计

    文章目录 1 设计目标2 功能点说明2 1 首页2 2 登陆2 2 1 微信用户和当前用户绑定的过程2 2 2 获取用户信息 2 3 创建店铺2 4 加入店铺2 5 创建商品2 6 商品信息修改2 7 入库管理2 8 出库管理2 9 库存盘
  • Tomcat的appBase,docBase,path关系

    文章目录 1 结论在最前面2 server xml关于appbase和context配置2 1 war包在webapps目录下 xff1b appbase 61 34 webapps 34 xff1b 无context配置2 2 war包在
  • ubuntu 18.04 LTS 安装搜狗输入法

    首先安装 fcitx xff0c 再安装搜狗输入法 一 检测是否安装fcitx 首先检测是否有 fcitx xff0c 因为搜狗拼音依赖fcitx 在终端中输入 fcitx xff0c 检查 fcitx 是否已有 fcitx 提示 xff1
  • Activiti之一:部署activiti-admin、activiti-app、activiti-rest

    文章目录 各组件版本下载部署将war包放入tomcat 访问 在网上查找activiti相关资料 xff0c 发现对于activiti rest的使用很少 xff0c 而官网对于api的支持还是比较多的 xff0c 如果考虑的是一个纯粹的工
  • 基于mongodb的动态表单实现

    文章目录 1 项目背景2 术语表3 技术选型4 概要设计4 1 逻辑架构图4 2 系统覆盖图 5 详细设计5 1 元数据样例及说明5 2 关于uuid 6 接口清单6 1 表单管理模块6 1 1 从excel导入表单元数据6 1 2 表单元
  • 10.9.1-Dataway+Echarts动态图表方案

    文章目录 1 技术选型2 实现方案2 1 方案介绍2 2 方案实现 xff08 demo xff09 2 2 1 使用echarts绘制html静态页2 2 1 1 选择合适的图表2 2 1 2 下载html demo 2 2 2 使用Da
  • 11.1-股票基金历年收益率计算

    文章目录 1 计算目标2 关键问题3 获取交易日历4 逻辑编写 1 计算目标 我们想知道 xff0c 一只股票标的 xff0c 在之前的几年中 xff0c 每一年的年化收益率是多少 xff1f 如果将每年的年化收益率进行求和汇总 xff0c
  • java代理实现爬取代理IP

    仅仅使用了一个java文件 xff0c 运行main方法即可 xff0c 需要依赖的jar包是com alibaba fastjson xff08 版本1 2 28 xff09 和Jsoup xff08 版本1 10 2 xff09 如果用
  • 使用proguard进行javaweb代码混淆

    背景 xff1a 公司需要将软件打包出售 xff0c 此时需要进行代码混淆和一些加密要求 调研 xff1a 目前此类实现包含软件和硬件实现 xff1b 硬件实现是使用类似加密狗usb工具进行防护 xff0c 应用系统通过与加密狗交互 xff
  • 使用说明-Postman-带cookie请求、文件上传

    Postman进行文件上传 选择post方式 xff0c 地址是http 192 168 102 213 7240 foa system upload Headers部分不要填写任何内容 对照后台的接口 xff0c 配置postman 选择
  • CentOS7下使用docker,完成Jenkins镜像、tomcat镜像制作和启动

    最终的目的 xff0c 是为了完成docker环境的Jenkins搭建使用 xff0c 并从gitlab上获取代码 xff0c 打出war包 xff0c war包通过目录挂载的方式 xff0c 在tomcat容器中使用 xff0c 总体思路
  • C# HttpWeb POST请求封装

    用于发送POST请求 xff0c 可以发送各种POST参数 传送文件 xff0c 返回结果 下载文件 说明如下 xff1a span class hljs keyword public span span class hljs keywor
  • [ROS学习笔记]ROS中使用激光雷达(RPLIDAR)

    RPLIDAR是低成本的二维雷达解决方案 xff0c 由SlamTec公司的RoboPeak团队开发 xff0c 本次学习用的是RPLidar A1型号激光雷达 xff0c 它能扫描360 xff0c 6米半径的范围它适合用于构建地图 xf
  • Ubuntu 18.04 配置国内源

    安装Ubuntu 18 04后 xff0c 使用国外源太慢了 xff0c 修改为国内源会快很多 修改阿里源为Ubuntu 18 04默认的源 备份 etc apt sources list 备份 cp etc apt sources lis
  • VS2010 断点失效解决方案 (VC)

    遇到几次断点失效的问题 xff0c 下面的方法都用了一下 xff0c 不清楚是哪个方法起作用了 一 菜单 调试 选项和设置 调试 常规 要求源文件与原始版本完全匹配 取消这个功能 二 菜单 编辑 高级 设置选定内容的格式 把打不上断点的那个
  • stm32学习

    波特率 xff1a 每秒传送的位数 DMA Direct Memory Access xff0c 直接内存存取 是所有现代电脑的重要特色 xff0c 它允许不同速度的硬件装置来沟通 xff0c 而不需要依赖于 CPU 的大量中断负载 否则
  • 经纬高坐标系转到东北天坐标系

    经纬高坐标系转到东北天坐标系 基本思路 xff1a 首先把经纬高 xff08 大地坐标系 lla llh xff09 转到直角坐标系 xff08 地心地固直角坐标系 xff08 ECEF xff09 xyz xff09 然后再转为局部坐标系
  • Ubuntu20.04 配置D435i相机

    文章目录 一 安装使用 InterRealSenseD435i SDK21 注册服务器的公钥2 安装3 安装开发者和调试包4 测试SDK2 二 安装realsense ros1 创建工作空间2 源码安装3 编译 xff1a 三 安装kali
  • java打卡-day3 变量和数据类型

    变量和数据类型 基本数据类型分类 4类8种 整数型 byte 占一个字节 128到127short 占两个字 215 215 1int 占四个字节 231 231 1long 占八个字节 263 263 1 浮点型float 占四个字节 3
  • 【行人惯性导航】关于行人导航中IMU位姿推导的知识点及相关代码

    IMU姿态惯性推导 本文是我上学期间写得 xff0c 之前已经在另一个博客发布过 xff0c 如今转至此发布 最近从事行人惯性导航的研究 xff0c 本人也是一个小白 xff0c 其中看了很多文献 xff0c 有很多个人思考很费时间的地方

随机推荐

  • nuttx操作系统的移植以及下载

    1 在ubuntu根目录下 xff1a root 64 ubuntu apt get update 更新包 2 root 64 ubuntu apt get install gcc arm none eabi 编译器 3 kconfig f
  • MPI集群环境搭建

    我在前面两篇博客中简要介绍了为什么要并行计算以及MPI的一些学习心得 xff0c 接下来我们正式开始MPI的学习之路 我们知道MPI是分布式内存编程 xff0c 所以这篇博客会详细讲解MPI集群环境的搭建过程 一 准备工作 选择Linux版
  • python 练习 tcp 服务器与客户端发、接信息,pycharm

    背景 win8 1 pycharm 2021 3 1 python 3 9 7 自带idle vs code 1 64 2 现象 1 代码不知道如何在idle 和 vs code中运行 xff0c 总是在运行客户端代码后 已先运行服务器代码
  • VSCode配置终端为cmd命令行程序的操作步骤

    步骤1 xff1a 依次点击菜单栏的 终端 新建终端 步骤2 xff1a 按图中红色箭头的方向和方框所示 xff0c 依次点击 步骤3 xff1a 点击图中红框处的command product xff0c 下次再启动时的VSCode终端就
  • VC/C++ 发送post请求

    前面我搭建了一个servlet xff0c 响应get post请求 xff0c 网页端已经实现get post请求 xff0c 这个时候我用c 43 43 编辑的程序也想发送post请求 xff0c 于是 xff0c 有了下面这段代码 s
  • Python subprocess模块解析

    在学习这个模块前 xff0c 我们先用Python的help 函数查看一下subprocess模块是干嘛的 xff1a DESCRIPTION This span class hljs keyword module span allows
  • Java与C/C++的性能对比

    写这个主题是因为若干时间前一时头脑发热 xff0c 写了这个帖子 xff08 http www iteye com topic 857722 xff09 xff0c 现在看来这个帖子很幼稚 xff0c 尤其是二楼 61 61 xff0c 后
  • char数组与char指针的区别与联系

    字符串 xff08 char xff09 与字符数组 xff08 char 区别 在C语言中 xff0c 对字符串的操作主要有两种方式 xff1a 一是字符数组 char xff0c 二是使用字符指针 char 接下来最这两种所使用的情况做
  • Ubuntu系统火狐浏览器无法上网方案解决

    在国内google浏览器无法直接使用 xff0c 我们安装ubuntu系统自带的火狐浏览器在设置中选择的事google上网 xff0c 所有大家网络连接没问题 xff0c 就是无法上网 解决问题如下 xff1a 第一种 xff1a 重新安装
  • 解决ROS常遇到的Couldn’t find executable named报错解决

    解决办法 xff1a 将执行文件打开权限允许作为程序执行文件
  • ROS学习(一)ROS Noetic安装及环境配置

    文章目录 前言0 ROS Installation Options1 Installation1 1 Configure your Ubuntu repositories1 2 Setup your sources list1 3 Set
  • 嵌入式Linux 时间同步 gpsd+chrony

    嵌入式Linux 时间同步 gpsd 43 chrony 嵌入式Linux系统 xff0c 外接GPS设备 xff0c 系统通过NMEA数据和pps进行时间同步 xff0c 同时将本系统作为时间同步服务器 一 基本原理 NMEA中获取UTC
  • ModbusRTU串口读写报文解析

    0 MODBUS速览 Modbus是一种通信协议 xff0c ModubsRTU是它的一种传输模式 xff0c 通过这个协议能实现串口数据通讯 可以用C 控件读写串口 xff0c 也可以直接使用开源的串口助手 为了简化问题 xff0c 本文
  • Types of daTabases数据库类型

    NoSQL databases provide the performance scalability and stability that s required by the modern data driven apps we inte
  • jeston TX1_TX2 ubuntu18.04安装(国内安装源gitee)ROS Melodic

    查看ubunut系统信息 cat proc version uname a lsb release a 我自己的系统信息是 xff1a 由于我自己已经迁移了系统至SD卡 xff0c 所以存储比较富裕 xff1a 通过对应的ubuntu版本安
  • 9 个将改变一切的物联网应用

    无论您是有远见的 CEO 技术驱动型 CEO 还是 IT 领导者 xff0c 您之前都遇到过 IoT 一词 它经常与最高级一起使用 xff0c 表示它将如何彻底改变您的工作 娱乐和生活方式 但这只是另一个流行语 xff0c 还是承诺的技术圣
  • Android aplog是什么?

    aplog 是系统应用层的log xff0c 比如应用程序无响应或强行关闭 xff0c kernel相关的 xff0c 比如driver xff08 相机 蓝牙 usb 启动 xff09 出了开机问题 手机对服务唤醒和休眠的一些记录蓝牙相关
  • android 7.0 加入 android:directBootAware

    Android N引入了一个新特性 xff1a Direct Boot Mode 设备启动后进入的一个新模式 xff0c 直到用户解锁 xff08 unlock xff09 设备此阶段结束 在此 Direct Boot Mode 下 APP
  • Kotlin概述与Java的比较

    Kotlin是JetBrains的一种新的编程语言 它首次出现在2011年 xff0c JetBrains推出了名为 科特林 的项目 Kotlin是开源语言 基本上像Java一样 xff0c C和C 43 43 Kotlin也是 静态类型编
  • armlink 用法详解

    映像文件 image xff1a 是指一个可执行文件 xff0c 在执行的时候被加载到处理器中 一个映像文件有多个线程 它是ELF Executable and linking format 格式的 段 Section xff1a 描述映像