IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【Linux】系统移植篇三--内核安装加载与交叉编译工具链 -> 正文阅读

[系统运维]【Linux】系统移植篇三--内核安装加载与交叉编译工具链



一、linux内核的安装与加载

安装方法与步骤在linux内核的安装与加载教程中以详细讲解,请自行下载,这里讲解安装中遇到的知识。

1、uboot内核启动命令

  • bootm

启动指定内存地址上的Linux内核并为内核传递参数

bootm kernel-addr ramdisk-addr dtb-addr

    kernel-addr:	内核的下载地址  
    ramdisk-addr:	根文件系统的下载地址  	
    dtb-addr:		设备树的下载地址
    若不使用相应的地址,对应的位置写“-”
eg: 
    bootm 0x41000000 - 0x42000000

2、uboot自启动参数环境变量

  • bootargs

设置传递给linux内核的参数

setenv bootargs root=/dev/nfs nfsroot=xxx.xxx.xxx.xxx:/opt/4412/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=***.***.***.***

root		根文件系统类型(nfs)
nfsroot		网络文件系统路径(xxx.xxx.xxx.xxx:/opt/4412/rootfs)
rw      	操作网络文件系统的权限(rw)
console		控制台(使用串口2,波特率115200)
init        init进程的位置(/linuxrc)
ip          linux启动后自身的IP(***.***.***.***)

二、交叉编译工具链

关于交叉编译工具在Ubuntu交叉编译安装教程中已有详细讲解,请自行下载安装,这里编译工具常用的命令,为之后学习内核作下铺垫。


1、编译原理

在这里插入图片描述

  • 机器码(二进制)处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植
  • 汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植
  • C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植

2、GCC的编译过程

在这里插入图片描述


3、交叉编译与工具获取

概念:程序的编译和运行不在同一台机器上
在这里插入图片描述

交叉编译工具链

  • 交叉编译工具链的获取:
    1. 官网获取(不推荐,需要自己进行复杂配置与编译)
      http://ftp.gnu.org/gnu/gcc/
    2. BSP板级开发支持包(推荐)
      samsung、全志…
  • 交叉编译工具链的内容
    1. 交叉编译工具
      gcc、readelf、size、nm、strip、objcopy、objdump、addr2line

    2. ARM架构的库

4、ELF文件格式与BIN文件格式

4.1 ELF文件格式

  • ELF
    • ELF格式是Linux平台上应用最广泛的二进制工业标准之一
    • ELF格式的文件内包含了很多个段不同的段存储了不同的信息;因为ELF格式的文件要通过Linux系统的加载和管理才能运行,所以除了最基本的代码段和数据段之外,其中还存储了很多其它的信息,如符号表、调试信息等
      在这里插入图片描述

4.2 ELF文件相关命令

  • file

    file + 文件名: 查看文件的详细信息

  • readelf

    readelf -h + 文件名 : 列出elf文件的头部信息
    readelf -a + 文件名 : 列出elf文件的所有信息

4.3 BIN文件格式

BIN文件一般是直接运行在CPU之上的可执行文件
文件内只包含了CPU能够直接识别和运行的指令和数据,不包含其它系统相关的信息


5、交叉编译工具链常用工具

  • size

列出目标文件每一段的大小以及总体的大小
size + 文件名

  • nm

列出 目标文件中的符号表 (标示符)
nm + 文件名

  • strip(对于嵌入式开发,这个命令很重要)

丢弃 目标文件中的符号
strip + 文件名


到这里就结束啦!
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-14 10:14:48  更:2022-05-14 10:16:51 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年9日历 -2024/9/28 7:07:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码