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

现代 IT 人一定要知道的 Ansible系列教程:playbook

定义 Ansible 从上到下执行操作以实现总体目标的顺序列表。 Play 映射到清单中的托管式节点的任务的有序列表。 Task 任务 个或多个模块的列表,用于定义 Ansible 执行的操作。...上面的临时命令和 playbook 都将对 webservers 组中的所有计算机执行。 常见patterns 下面表中列出了定位清单主机和组的常见模式。...如果主机或组未在清单中列出,则无法使用模式来定位它。...标志 可以使用命令行选项更改 playbook 中定义的模式的行为。...即使您的目标主机未在清单中定义,这也有效,但此方法不会读取与此主机绑定的变量的清单,并且 playbook 所需的任何变量都需要在命令行中手动指定。

46710

《程序员的自我修养》第三章学习笔记

、运行平台、ABI版本、 ELF重定位类型、硬件平台、硬件平台版本、入口地址、程序头入口和长度、段表的位置和长度及段的数量等。...3.4.3 重定位表 1,一个叫”rel.text”的段,类型是”SHT_REL”,就是重定位表 2,链接器在处理目标文件时,需要对目标文件中的某些部位进行重定位(即代码段和数据段中那些对绝对地址的引用的位置...3,这些重定位信息都记录在ELF文件的重定位表里。对于每个需要重定位的代码段或数据段,都会有一个相应的重定位表。...(2)       在本目标文件中引用的全局符号,在别的目标文件中定义。一般叫做外部符号(external symbol)。...5,弱引用与强引用: 强引用:假如链接时没找到该符号的定义,链接器就会报符号未定义错误。 弱引用:假如链接时没找到该符号的定义,链接器不会报错,默认其为0或是一个特殊值。

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

    CSAPP---第七章-链接

    ---- 符号解析 链接器解析符号引用的方法就是将每个引用与它输入的可重定位目标文件的符号表中的一个确定符号定义关联起来。...这样的选项调用链接器,在遇到多重定义的全局符号时,触发一个错误,或者使用-Werror选项,它会把所有的警告都变成错误, ---- 静态库 我们可以通过链接器读取一组可重定位文件,并把它们链接起来,形成一个可执行文件...如果当链接器完成对命令行上输入文件的扫描后,U是非空的,那么链接器就会输出一个错误并终止。否则,它会合并和重定位E中的目标文件,构建输出可执行文件。...下图展示了ELF重定位条目格式: ELF定义了32种不同的重定位类型,我们只需要关心其中两种即可: 重定位PC相对引用 重定位绝对引用 链接器会根据我们目标文件或者静态库中的重定位表,找到那些需要被修正的全局变量和函数...多个目标文件可以定义相同的符号,而链接器用来悄悄地解析这些多重定义的规则可能在用户程序中引入微妙的错误。 多个目标文件可以被连接到一个单独的静态库中。链接器用库来解析其他目标模块中的符号引用。

    92310

    ELF文件结构描述

    正如我们开始所说的,链接器在处理目标文件时,须要对目标文件中某些部位进行重定位,即代码段和数据段中哪些对绝对地址的引用的位置。...这些重定位的信息都记录在ELF文件的重定位表里面,对于每个须要重定位代码段或数据段,都会有一个相应的重定位表。 字符串表 ELF文件中用到了许多的字符串,比如段名,变量名等。...在链接中,目标文件之间相互拼合实际上是目标文件之间对地址的引用,即对函数和变量的地址的引用。...在本目标文件中引用的全局符号,却没有定义在本目标文件,这一般叫做外部符号(External Symbol),也就是我们前面所讲的符号引用。...这些符号并没有在你的程序中定义,但是你可以直接声明并引用它,我们称之为特殊符号。其实这些符号是被定义在链接器脚本中的,我们无须定义它们,但可以声明它们并且使用它们。

    1.6K50

    强制升级openssl导致无法使用SSH(生成ssh公钥)

    and associated developement headers required 不过很快意识到自己犯了个低级错误,编译默认搜索的header和lib还是系统自带的老版本openssl,于是在...坑二:openssl链接 原以为freeswitch可以愉快的运行了,事与愿违,server无情的抛出以下错误: symbol lookup error: /usr/local/lib/libfreeswitch.so....1: undefined symbol: EVP_aes_128_ctr 看起来是因为默认的sshd是用老版本openssl编译的,于是想到升级openssh,指定依赖最新版本的openssl,于是一阵...,因此选择先安装到/usr/local/openssh,然后将/usr/sbin/sshd符号链接到/usr/local/openssh/sbin/sshd中: 首先停止正在运行的sshd服务:service...sshd stop 备份老版本sshd文件,然后删除/usr/sbin/ssh 创建符号链接 启动sshd服务service sshd start 立马通过跳板机ssh登录来测试新版本openssh的效果

    2.7K20

    Xcode中和symbols有关的几个设置

    摘抄《深入理解计算机系统》里的一些描述: 一个典型的ELF可重定位目标文件包含下面几个节: ... ... .symtab:一个符号表,它存放在程序中定义和引用的函数和全局变量信息。...一些程序员错误地认为必须通过-g选项来编译程序才能得到符号表信息。实际上,每个可重定位目标文件在.symtab中都有一张符号表。...为了构造可执行文件,链接器必须完成两个主要任务: 符号解析(symbol resolution)。目标文件定义和引用符号。符号解析的目的是将每个符号引用刚好和一个符号定义联系起来。...链接器通过把每个符号定义与一个存储器位置联系起来,然后修改所有对这些符号的引用,使得它们指向这个存储器位置,从而重定位这些节。...Objective-C不会为方法定义链接符号,只会为类定义链接符号。 可以在终端中用nm命令查看一个可重定位文件或可执行文件的符号表,其中加上-a参数可以显示包括调试符号在内的所有符号。

    2K30

    ELF文件及android hook原理

    链接器在处理目标文件时,需要对目标文件中的某些部位进行重定位,即代码段和数据中中那些绝对地址引用的位置。对于每个需要重定位的代码段或数据段,都会有一个相应的重定位表。...整个链接过程分两步: 第一步 空间与地址分配 扫描所有的输入目标文件,并且获得它们的各个段的长度、属性和位置,并且将输入目标文件中的符号表中所有的符号定义和符号引用收集起来,统一放到一个全局符号表中。...第二步 符号解析与重定位 使用第一步中收集到的信息,读取输入文件中段的数据、重定位信息,并且进行符号解析与重定位、调整代码中的地址等 使用ld链接器将”a.o”和”b.o”链接起来: $ld a.o b.o...对于32位的Intel x86系列处理器来说,重定位表的结构是一个Elf_32Rel结构的数组,每个数组元素对应一个重定位入口。定义如下: ?...用readelf查看elf文件的动态符号表及它的哈希表。 ? 动态链接重定位表 在动态链接中,导入符号的地址在运行时才确定,所以需要在运行时将这些导入符号的引用修正,即需要重定位。

    3.9K81

    如何在CoreOS集群上使用CloudSlang清理Docker环境

    CloudSlang语言允许您以文本,可重用的方式定义流,您可以使用现有内容(Docker,OpenStack和实用程序)来管理已部署的应用程序或创建自己的自定义流。...准备 在开始之前,您将需要: 带有sudo命令的非root用户的Ubuntu 14.04 Droplet ,它将是你的CloudSlang服务器。...没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器。 在CloudSlang服务器上安装Java(版本7或更高版本)。...流程完成后,CLI会输出一些有用的信息,如流量输出和流量结果。 在我们的例子中,流结果将是SUCCESS(这意味着未在集群中清除了未使用的Docker镜像)或FAILURE(这意味着出现了错误)。...,请查看bin文件夹中CLI创建的文件execution.log。

    1.1K00

    objdump命令解析

    它显示的信息类似于 nm -D|--dynamic 显示的信息。 -V --version 版本信息 --all-headers -x 显示所可用的头信息,包括符号表、重定位入口。....symtab:一个符号表(symbol table),它存放在程序中被定义和引用的函数和全局变量的信息。一些程序员错误地认为必须通过-g选项来编译一个程序,得到符号表信息。....rel.text:当链接噐把这个目标文件和其他文件结合时,.text节中的许多位置都需要修改。一般而言,任何调用外部函数或者引用全局变量的指令都需要修改。另一方面调用本地函数的指令则不需要修改。...注意,可执行目标文件中并不需要重定位信息,因此通常省略,除非使用者显式地指示链接器包含这些信息。 .rel.data:被模块定义或引用的任何全局变量的信息。....debug:一个调试符号表,其有些表目是程序中定义的局部变量和类型定义,有些表目是程序中定义和引用的全局变量,有些是原始的C源文件。只有以-g选项调用编译驱动程序时,才会得到这张表。

    4.7K21

    一步一步教你注册GitHub账号及简单使用

    邮箱一栏:要填写合法邮箱,并且是未在 GitHub 注册过的邮箱,否则会弹出错误提示 密码一栏:注意密码至少是7个字符。 这些填写正确之后,此时点击最下方的绿色大按钮就开始注册了。...进入邮箱找到 GitHub 发送的验证邮件,点击任意一个链接即可验证并跳回到注册完成后的页面,再重新点击 Starta project,开启第一个版本库。...SSH and GPG keys 并新建一个 SSH Key 其中 Title 中的名称可以任意填写,将 C:\Users\Administrator\.ssh 目录下 id_rsa.pub...复制的所有内容粘贴到 Key 中,点击 Add SSH Key,SSH密钥完成。...中的 SSH 远程提交:git push origin master JiekeXu0 是我注册的账号,这时再看 GitHub 中的 Mytest 仓库,发现多了一个 Mytest.txt

    54K60

    动态链接的相关结构

    我们知道在静态链接中,有一个专门的段叫做符号表“.symtab”( Symbol Table),里面保存了所有关于该目标文件的符号的定义和引用。...动态链接符号表的结构与静态链接的符号表几乎一样,我们可以简单的将导入韩式看作是对其他目标文件中函数的引用:把导出函数看作是在本目标文件定义的函数就可以了; 3....但是在动态链接中,导入符号的地址在运行时才确定,所以需要在运行时将这些导入符号的引用修正,即需要重定位; 我们在前面地址无关章节中也提到过,动态链接的可执行文件使用的是PIC方法,但这不能改变它需要重定位的本质...是的,PIC的共享对象也是需要重定位的; 对于使用PIC技术的可执行文件或共享对象来说,虽然它们的代码段不需要重定位(因为地址无关),但是数据段还包含了绝对地址的引用,因为代码段中绝对地址相关的部分被分离了出来...在静态链接中,目标文件里面包含有专门用于表示重定位信息的重定位表,比如“rel.text”表示是代码段的重定位表,“rel.data”是数据段的重定位表。

    1.7K20

    《深入理解计算机系统》(CSAPP)读书笔记 —— 第七章 链接

    构造大型程序的程序员经常会遇到由于缺少模块、缺少库或者不兼容的库版本引起的链接器错误。除非你理解链接器是如何解析引用、什么是库以及链接器是如何使用库来解析引用的,否则这类错误将令你感到迷惑和挫败。...重定位   一旦链接器完成了符号解析这一步,就把代码中的每个符号引用和正好一个符号定义(即它的一个输入目标模块中的一个符号表条目)关联起来。...链接器的两个主要任务是符号解析和重定位,符号解析将目标文件中的每个全局符号都绑定到一个唯一的定义,而重定位确定每个符号的最终内存地址,并修改对那些目标的引用。   ...多个目标文件可以定义相同的符号,而链接器用来悄悄地解析这些多重定义的规则可能在用户程序中引入微妙的错误。   多个目标文件可以被连接到一个单独的静态库中。链接器用库来解析其他目标模块中的符号引用。...在加载时,加载器将部分链接的可执行文件映射到内存,然后调用动态链接器,它通过加载共享库和重定位程序中的引用来完成链接任务。

    2.6K31

    TypeScript 4.4 RC版来了,正式版将于月底发布

    例如,我们可以编写一个带有索引签名的类型,此类型接收 string 键并映射为相应的 boolean 值。如果我们尝试分配 boolean 值以外的值,则返回错误。..."unknown-property": true, // 错误!'unknown-property' 未在'OptionsWithDataProps'中声明。...--force 构建速度更快 在项目引用中使用 --build 模式时,TypeScript 必须执行最新检查以确定需要重建哪些文件。...这些建议与 TypeScript 文件中的“Did you mean…?”形式完全相同。 拼写建议中的线索能够帮助您查找代码中的错误。我们也在测试中成功从现有代码中找出了不少错误!...更广泛的始终为真承诺检查 在之前的版本中,TypeScript 引用了“始终为真承诺检查”(Always Truthy Promise checks)来捕捉可能遗留有 await 的代码。

    2.6K20

    《程序员的自我修养》第二章学习笔记

    添加行号和文件名标识,比如#2"hello.c"2,以便于编译时编译器产生调试用的符号信息及用于编译时产生编译错误或警告时能够显示行号   6. ...经过预编译后的.i文件不包含任何宏定义(所有的宏都展开了),被包含的文件也被插入到.i文件中。   ...2,  链接的主要内容就是:把各个模块之间相互引用的部分都处理好,使得各个模块之间能够正确的衔接。   3,  从原理上说,链接器的工作无非就是把一些指令对其他符号地址的引用加以修正。   ...4,  链接过程主要包括了:地址和空间分配(Address and Storage Allocation),符号决议(Symbol Resolution)和重定位(Relocation)。   ...7,  地址修正的过程也叫重定位(Relocation)。   8,  每个要被修正的地方叫一个重定位入口(Relocation Entry)。 参考文献《程序员的自我修养--链接、装载与库》

    64550

    深入iOS系统底层之静态库介绍

    在后续的链接过程中需要调整这些指令的操作数的值来进行重定位(Relocation),为此系统在编译的目标文件中的对那些有外部符号引用的节(Section)中都会建立一个重定位表(Relocation table...这个重定位表中的每个条目会将所有需要进行重定位的指令或者数据访问的位置信息以及引用的外部符号的信息记录起来,以便在链接时进行更新处理。下面的图表展示了这个结构: ?...为了在链接时能够对所有的外部符号引用进行重定位,描述机制代码__text的Section结构: //如果是64位系统则是section_64 struct section { /* for 32-bit...就如上面的图例中的"Relocations Offset"和"Number of Relocations"中描述的是重定位表在文件的0x116c的偏移处,一共有3个需要进行重定位的信息。...我们知道在程序链接时需要读取目标文件中的符号表信息才能决定其他目标文件中引用的符号信息是否真实存在,当其他目标文件引用的符号信息不存在或者找不到时就会报经典的符号信息不存在的错误: Undefined

    1.3K52

    研读《程序员的自我修养—链接、装载与库》

    链接包括:地址和空间分配、符号决议和重定位。...链接器为目标文件分配地址和空间有两层含义: 1、输出的可执行文件的空间; 2、装载后的虚拟地址中的虚拟地址空间; 链接过程分为两步: 1、空间和地址分配,扫描所有的目标文件,获得各个段的长度、属性、...位置信息,并把所有的符号定义以及引用收集起来,放到全局的符号表中; 通过所有段的长度,计算和合并后的长度和位置,并建立映射关系; 2、符号解析和重定位,使用上一步收集到的信息,读取文件中段的数据和重定位信息...,进行符号解析和重定位; .lib、.a是常见的静态链接库; 静态库的缺点: 浪费内存和磁盘空间、更新困难; 动态链接 动态链接:把链接的过程推迟到运行时再进行。...它要解决其他共享对象的依赖问题,不能依赖其他共享对象; 外部符号:在本目标文件引用但没有定义的符号;(External Symbol) 当多个同名符号冲突的时候,先装入的符号优先,这种优先级方式成为装载序列

    1.6K70

    认识目标文件结构

    常见的做法就是把字符串集中起来存放到一个表。然后使用字符串在表中的偏移来引用字符串; (11).rela.text,代码段重定位表存放目标文件未定义的指令在链接时所需的重定位信息。...(6)应用程序二进制接口版本(ABI Version),为0。 (7)类型(Type),为可重定位文件(REL,Relocatable file),包括目标文件.o与静态链接库.a。...比如目标文件B用到了目标文件A中的函数foo,那么称目标文件A定义了函数foo,目标文件B引用了函数foo。定义与引用这两个概念同样适用于变量。...定义在本目标文件,可以被其它目标文件引用。比如 test.o 中的 gInitVar、gUninitVar 与 foo; (2)外部符号(External Symbol)。...,重定位代码段对外部模块的引用。

    1.2K30

    更优雅地远程操作服务器:Paramiko库的实践

    Paramiko中的几个基础名词: 1. Channel:是一种安全的SSH传输通道; 2....一个文件名或文件列表,指定私钥文件 timeout=None 可选的tcp连接超时时间 allow_agent=True, 是否允许连接到ssh代理,默认为True 允许 look_for_keys=...--stdin 2、标准输出(保存命令的正常执行结果)--stdout 3、标准错误输出(保存命令的错误信息)--stderr #定义函数ssh,把操作内容写到函数里 def ssh_exe_cmd(host...定义成ftp_client变量后边方便引用 ftp_client = paramiko.SFTPClient.from_transport(ssh_ftp) #下载文件 #ftp_client.get...定义成ftp_client变量后边方便引用 ftp_client = paramiko.SFTPClient.from_transport(ssh_ftp) #上传文件 ftp_client.put

    59220

    Linux命令(65)——ld命令

    >,--mri-script=:为与MRI链接器兼容,ld接受由MRI命令语言编写的脚本文件 --cref:创建跨引用表 -d,-dc,-dp:即使指定了可重定位的输出文件...脚本命令“FORCE_COMMON_ALLOCATION”具有相同的效果 -defsym:在输出文件中创建指定的全局符号 -demangle:在错误消息中还原符号名称 -e :使用指定的符号作为程序的初始执行点...如果输出格式支持Unix样式的幻数,则将输出标记为"NMAGIC" -noinhibit-exec:生成输出文件,即使出现非致命链接错误。通常,如果链接器在链接过程中遇到错误,它将不会生成输出文件。...=:从指定的文件读取符号名称和地址 -r,--relocatable:生成可重定位的输出(称为部分连接) -rpath=:把指定的目录添加到运行时库搜索路径 -rpath-link...org>:使用指定的地址作为bss段的起始点 -t,--trace:在处理输入文件时显示它们的名称 -u symbol>,--undefined=symbol>:强制指定符号在输出文件中作为未定义符号

    17.7K13
    领券