单板如何挂载linux虚拟机,单板机上的LINUX,从零开始(二)

2023-11-08 06:20

本文主要是介绍单板如何挂载linux虚拟机,单板机上的LINUX,从零开始(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

单板机上的LINUX,从零开始(二)

(2014-07-27 10:21:28)

标签:

it

arm

beaglebone

linux

上一篇介绍了如何在X86上制作一个交叉编译系统的第一步:生成可以处理目标代码(这里是ARM)的二进制工具“Binutils”。现在介绍交叉编译器的产生。

编译器的产生有点技巧,因为完整的编译器,依赖目标代码的C库和头文件。而从零开始的制作,现在还没有C库及其头文件!而C库的产生,又依赖内核头文件。

不过第一步,是生成一个最小的C编译器,不需要任何其它功能。因为无论C库还是内核,都是独立的,自成一体的,它们不依赖于任何一丁点其它的东西!因此,编译器的产生,分为两步。第一步,配置生成一个最小的C编译器,用这个编译器产生C库和头文件。第二部,配置生成一个完整的编译器。

首先,下载GCC编译器。它是一个比较完成的编译系统,包含好几种开发语言,最新的版本是4.9.1。用configure配置的时候,有几点需要注意。一是指定产生的目标代码,这里依然是arm-elf-linux-gnueabi。这是一套准备在X86

LINUX上运行,产生ARM执行代码的编译器,就是通常讲的交叉编译。二是指定只生成C语言编译器,三是取消其它的各种库和功能。因为只用它来编译C库,而它是纯C语言写成的,自成一体的,对外没有依赖,因此无需编译器的其它辅助功能。

简单的小C编译器生成之后,就可以编译生成目标机的C库和头文件了。不过C库的生成依赖于内核输出的头文件,因此需要先生成输出内核头文件。下载LINUX内核,选择的版本是3.14.13。3.14版本的内核,不是最新的版本,但是是长期版本中最新的。LINUX的内核更新速度飞快,好在它们会标明是否是长期支持的内核。下载最新的长期支持的版本,是自然的选择。生成输出内核的头文件,不需要使用交叉编译,因为这一步没有生成任何执行代码的需要。

有了内核头文件,就可以配置并生成C库了。配置项里,最重要的依然是指明目标代码。配置项是"--host=arm-elf-linux-gnueabi",表示生成的代码将在什么样的机器上运行。而"--target=arm-elf-linux-gnueabi"是表示生成的工具它产生什么样的代码。还有一个需要注意的项目是"--prefix",是表示将把生成的系统安装在什么目录下。只要是生成一个系统的基础C库,无论如何,这个应该是"--prefix=/usr"。通常交叉编译环境里面,目标机的C库不可能被存放在/usr下面,因为这是本机存放C库和其它重要文件的地方。编译生成后,在用make

install安装的时候,需要用环境变量DESTDIR来指定这套库被安装在本机的什么目录下。

目标机的C库安装完成后,需要再生成一次编译器。这一次,因为C库已经存在,所以可以生成一套完整的编译器。这里个人选择只生成C和C++,包含完整的功能和库。需要注意的是,这一次的配置项,需要指定"--sysroot"目录。它应该是目标机C库在本机所在的目录,就是安装C库和头文件时,用DESTDIR指定的目录。

至此,一套完整的交叉编译环境就产生了。下一篇将介绍编译启动引导程序:U-Boot的编译。

分享:

a4c26d1e5885305701be709a3d33442f.png喜欢

0

a4c26d1e5885305701be709a3d33442f.png赠金笔

加载中,请稍候......

评论加载中,请稍候...

发评论

登录名: 密码: 找回密码 注册记住登录状态

昵   称:

评论并转载此博文

a4c26d1e5885305701be709a3d33442f.png

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

这篇关于单板如何挂载linux虚拟机,单板机上的LINUX,从零开始(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/368306

相关文章

linux生产者,消费者问题

pthread_cond_wait() :用于阻塞当前线程,等待别的线程使用pthread_cond_signal()或pthread_cond_broadcast来唤醒它。 pthread_cond_wait() 必须与pthread_mutex 配套使用。pthread_cond_wait()函数一进入wait状态就会自动release mutex。当其他线程通过pthread

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人习惯的路径 /opt/tomcat-10

RedHat运维-Linux文本操作基础-AWK进阶

你不用整理,跟着敲一遍,有个印象,然后把它保存到本地,以后要用再去看,如果有了新东西,你自个再添加。这是我参考牛客上的shell编程专项题,只不过换成了问答的方式而已。不用背,就算是我自己亲自敲,我现在好多也记不住。 1. 输出nowcoder.txt文件第5行的内容 2. 输出nowcoder.txt文件第6行的内容 3. 输出nowcoder.txt文件第7行的内容 4. 输出nowcode

【Linux进阶】UNIX体系结构分解——操作系统,内核,shell

1.什么是操作系统? 从严格意义上说,可将操作系统定义为一种软件,它控制计算机硬件资源,提供程序运行环境。我们通常将这种软件称为内核(kerel),因为它相对较小,而且位于环境的核心。  从广义上说,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并使计算机具有自己的特生。这里所说的其他软件包括系统实用程序(system utility)、应用程序、shell以及公用函数库等

Windows/macOS/Linux 安装 Redis 和 Redis Desktop Manager 可视化工具

本文所有安装都在macOS High Sierra 10.13.4进行,Windows安装相对容易些,Linux安装与macOS类似,文中会做区分讲解 1. Redis安装 1.下载Redis https://redis.io/download 把下载的源码更名为redis-4.0.9-source,我喜欢跟maven、Tomcat放在一起,就放到/Users/zhan/Documents

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

Linux 下的Vim命令宝贝

vim 命令详解(转自:https://www.cnblogs.com/usergaojie/p/4583796.html) vi: Visual Interface 可视化接口 vim: VI iMproved VI增强版 全屏编辑器,模式化编辑器 vim模式: 编辑模式(命令模式)输入模式末行模式 模式转换: 编辑-->输入: i: 在当前光标所在字符的前面,转为输入模式

Linux和Mac分卷压缩

使用 zip 命令压缩文件 使用 zip 命令压缩文件,并结合 split 命令来分卷: zip - largefile | split -b 500k 举例: zip - ./tomcat.dmg |split -b 500k 上述命令将文件 largefile 压缩成 zip 包并分卷成不超过 500k 的文件,分解后文件名默认是 x* ,后缀为 2 位a-z 字母,如 aa、ab。

Linux文本三剑客sed

sed和awk grep就是查找文本当中的内容,最强大的功能就是使用扩展正则表达式 sed sed是一种流编辑器,一次处理一行内容。 如果只是展示,会放在缓冲区(模式空间),展示结束后,会从模式空间把结果删除 一行行处理,处理完当前行,才会处理下一行。直到文件的末尾。 sed的命令格式和操作选项: sed -e '操作符 ' -e '操作符' 文件1 文件2 -e表示可以跟多个操作

Linux中拷贝 cp命令中拷贝所有的写法详解

This text from: http://www.jb51.net/article/101641.htm 一、预备  cp就是拷贝,最简单的使用方式就是: cp oldfile newfile 但这样只能拷贝文件,不能拷贝目录,所以通常用: cp -r old/ new/ 那就会把old目录整个拷贝到new目录下。注意,不是把old目录里面的文件拷贝到new目录,