abort, please install lsb_release

本文解决部署SRS过程中遇到的abort,pleaseinstalllsb_release错误。通过安装lsb_release包(使用命令yum install redhat-lsb),成功解决了部署问题并顺利启动了SRS服务器。

在部署 SRS的时候,出现 abort, please install lsb_release 错误:

[root@localhost SRS-CentOS6-x86_64-2.0.258]# ./INSTALL 
argv[0]=./INSTALL
execute scripts in file: ./INSTALL
create log( /root/SRS-CentOS6-x86_64-2.0.258/logs/package.1553844286.log ) success           [  OK  ]
see detail log: tailf /root/SRS-CentOS6-x86_64-2.0.258/logs/package.1553844286.log           [  OK  ]
check tools                                                                                  [  OK  ]
abort, please install lsb_release                                                            [FAILED]

解决方式:安装 lsb_release

yum install redhat-lsb

测试:

[root@localhost SRS-CentOS6-x86_64-2.0.258]# lsb_release 
LSB Version:	:core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch

重新部署 SRS:

[root@localhost SRS-CentOS6-x86_64-2.0.258]# ./INSTALL 
argv[0]=./INSTALL
execute scripts in file: ./INSTALL
create log( /root/SRS-CentOS6-x86_64-2.0.258/logs/package.1553844373.log ) success           [  OK  ]
see detail log: tailf /root/SRS-CentOS6-x86_64-2.0.258/logs/package.1553844373.log           [  OK  ]
check tools                                                                                  [  OK  ]
check previous install                                                                       [  OK  ]
previous install checked                                                                     [  OK  ]
backup old srs                                                                               [  OK  ]
old srs backuped                                                                             [  OK  ]
prepare files                                                                                [  OK  ]
prepare files success                                                                        [  OK  ]
copy core components                                                                         [  OK  ]
copy core components success                                                                 [  OK  ]
install init.d scripts                                                                       [  OK  ]
install init.d scripts success                                                               [  OK  ]
install system service for CentOS                                                            [  OK  ]
install system service success                                                               [  OK  ]

see: https://github.com/ossrs/srs/wiki/v1_CN_LinuxService
install success, you can:
      sudo /etc/init.d/srs start
srs root is /usr/local/srs

再启动SRS服务器就可以了;

<think>我们有一个ARM汇编代码,它定义了一个启动段和异常向量表。 代码顶部有注释,显示日期和作者。 代码段开始于.section .startup,指定了后续代码属于.startup段。 .code 32 表示这是32位ARM指令(ARM模式)。 .align 0 表示不进行对齐(但通常我们会看到对齐,这里可能是0字节对齐,即不改变当前对齐)。 然后声明了全局符号_start,以及一系列外部符号(这些是异常处理程序的入口,由链接器在其他文件中解析)。 _start: 标签是程序的入口点。 在_start处,我们有一系列加载指令: ldr pc, _vector_reset 这条指令将存储在_vector_reset地址处的值(即__vector_reset函数的地址)加载到程序计数器(pc)中,从而跳转到复位异常处理程序。 类似地,接下来的指令分别处理其他异常:未定义指令、软件中断(SWI)、预取中止、数据中止、保留异常、IRQ(中断请求)和FIQ(快速中断)。 注意:在ARM架构中,异常向量表通常位于地址0x00000000(或在高地址,取决于配置)。每个异常向量占用4个字节(一个字),存放的是跳转指令(如LDR PC, ...)或者直接是跳转目标地址。 在异常向量表之后,使用.align 4进行4字节对齐(即16字节对齐,因为2^4=16)。然后定义了一系列字(.word),这些字的内容是外部符号的地址。例如: _vector_reset: .word __vector_reset 这里定义了一个标签_vector_reset,并在该位置存储了__vector_reset的地址。 因此,当发生复位异常时,CPU会跳转到0x00000000(复位向量地址)执行指令,该指令是: ldr pc, _vector_reset 而_vector_reset标签的地址在向量表之后,该指令将_vector_reset地址处存储的值(即__vector_reset的实际地址)加载到PC,从而跳转到真正的复位处理函数。 其他向量同理。 现在,根据要求,我们需要在回答后提出3-5个相关问题,并且以“§§相关问题§§”开头,然后列出问题。 注意:问题要基于用户的问题和我们的回答。 </think>### ARM启动代码与异常向量表解析 #### 代码功能说明(ARM32架构启动文件) ```assembly .section .startup ; 定义启动代码段(通常位于内存起始位置) .code 32 ; 指定ARM指令集(32位模式) .align 0 ; 字节对齐(实际不需要对齐) .global _start ; 声明程序入口点为全局符号 .extern ... ; 声明外部异常处理函数(由其他文件实现) _start: ldr pc,_vector_reset ; ┐ ldr pc,_vector_undefined; │ ldr pc,_vector_swi ; │ ARM异常向量表 ... ; ┘ ldr pc,_vector_fiq ; (共8个标准异常入口) .align 4 ; 4字节对齐(16字节边界) _vector_reset: .word __vector_reset ; ┐ _vector_undefined: .word __vector_undefined ; │ 异常处理函数指针表 ... ; │ (存储实际函数地址) _vector_fiq: .word __vector_fiq ; ┘ ``` #### 核心机制详解: 1. **异常向量表结构**: - 位于内存起始位置(0x00000000) - 包含8个连续指令槽(每个4字节),对应CPU的8种异常: ```mermaid graph LR 0x00-->复位Reset 0x04-->未定义指令Undef 0x08-->软件中断SWI 0x0C-->预取中止PrefAbort 0x10-->数据中止DataAbort 0x14-->保留Reserved 0x18-->中断请求IRQ 0x1C-->快速中断FIQ ``` 2. **跳转原理**: - 当异常发生时,CPU**自动跳转**到对应向量地址 - `ldr pc, _vector_xxx` 指令将存储在该地址的函数指针加载到PC寄存器 - 示例:发生IRQ中断时: ```armasm 0x18: ldr pc, _vector_irq --> 跳转到 [_vector_irq] 存储的地址 ↓ _vector_irq: .word __vector_irq --> 指向实际中断处理函数 ``` 3. **关键设计特点**: - **位置敏感**:必须编译到内存起始位置(通过链接脚本实现) - **指令限制**:每个向量槽仅4字节,故只能放单条跳转指令 - **二级跳转**:通过指针表实现长跳转(直接`b __vector_irq`会超出范围) - **启动顺序**:复位后首先执行`_vector_reset`指向的初始化代码 #### 嵌入式系统中的作用: ▸ **复位流程**: ```mermaid sequenceDiagram CPU上电->>向量表: 自动跳转到0x00 向量表->>复位处理: ldr pc,__vector_reset 复位处理->>栈初始化: 设置各模式栈指针 复位处理->>数据初始化: .data段复制到RAM 复位处理->>BSS清零: .bss段清零 复位处理->>主程序: 跳转到main() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值