Linux Kernal
文章平均质量分 67
Linux Kernal
阿卡基-马
业余马拉松选手
展开
-
设备树中dtb和dtbo的区别
DTBO通常用于模块化硬件配置或者针对特定子系统的动态配置更改,比如在某些嵌入式系统中加载额外的硬件模块时,可以加载相应的DTBO来更新设备树配置。DTB (Device Tree Blob): 这是在启动阶段用来传递给Linux内核的硬件描述信息的二进制文件,包含了系统中的所有硬件设备信息。它是由Device Tree Source (DTS) 文件编译生成的。简而言之,DTB是完整的系统设备树,而DTBO则是对DTB的一种补充或覆盖,常用于实现更灵活的设备配置管理。原创 2024-04-23 17:31:00 · 596 阅读 · 0 评论 -
交叉编译工具 aarch64-linux-gnu-gcc 的介绍与安装
aarch64-linux-gnu-gcc 交叉编译器必须安装在 64 位主机上,才能编译目标代码。建议直接从 linaro 的官网下载相应版本的 gcc-linaro 交叉编译工具,并直接选择带有二进制的文件,即在官网入口处选择 binaries 路径,该文件夹下面包含各种版本的已经编译好的 aarch64-linux-gnu-gcc 二进制可执行程序。如果你在安装的过程中,出现了问题,也可以直接从官方网站下载编译好的二进制文件,直接运行,不过,得注意下载的版本要与硬件架构、系统版本相符。原创 2024-01-16 11:08:59 · 4412 阅读 · 1 评论 -
动态库(.so)链接静态库(.a)的情况总结
动态库(.so)链接静态库(.a)的情况总结一般来说在链接时想要使用静态库有三种方法:1、link时加上 -static 选项;当加上 -static选项后,gcc会把所有用到的库都做静态连接。2、link时直接指定想要静态连接的.a文件的绝对路径。优点是除非.a文件不存在,否则肯定有效;缺点也是很明显,拿到其他机器上编译时,.a文件也必须在相同的路径下存放。3、在要静态连接的库前指定-Bstatic ,在要动态连接的库前指定-Bdynamic选项。连接器在看到-Bstatic时会优于去找.原创 2022-04-25 17:09:37 · 3928 阅读 · 2 评论 -
linux实际用户和有效用户的区别,附程序示例说明
看unix高级编程的时候,第八章有提到实际用户和有效用户,那么这两个用户到底是什么,它们之间有什么区别呢?实际用户:表示一开始执行程序的用户,比如用账号iceup登录shell,然后执行程序ls,那么实际用户就是iceup。有效用户:有效用户是指在程序运行时,计算权限的用户。大多数情况下实际用户和有效用户相等,但是在执行拥有SUID权限的程序的时候,这两个用户通常会不一致。为方便理解,...转载 2018-07-20 17:08:13 · 3183 阅读 · 0 评论 -
文件描述符与FILE
1. 文件描述符(重点)在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文...转载 2018-07-21 09:18:11 · 1106 阅读 · 0 评论 -
cat /proc/iomem
在proc目录下有iomem和ioports文件,其主要描述了系统的io内存和io端口资源分布。 对于外设的访问,最终都是通过读写设备上的寄存器实现的,寄存器不外乎:控制寄存器、状态寄存器和数据寄存器,这些外设寄存器也称为“IO端口”,并且一个外设的寄存器通常是连续编址的。 不同的CPU体系对外设IO端口物理地址的编址方式也不同,分为I/O映射方式(I/O-mapped)和内存映射方式(M...转载 2018-09-17 21:15:53 · 3091 阅读 · 0 评论 -
关于 /bin/bash 和 /bin/sh
#!/bin/bash是指此脚本使用/bin/bash来解释执行。其中,#!是一个特殊的表示符,其后,跟着解释此脚本的shell路径。bash只是shell的一种,还有很多其它shell,如:sh,csh,ksh,tcsh,...我们可以通过以下一个示例来进行实验,了解#!/bin/bash的使用。除第一行外,脚本中所有以“#”开头的行都是注释。1)#!/bin/bash只能放...原创 2018-12-13 11:37:52 · 20906 阅读 · 1 评论