WSL 与操作系统的关系

news/2024/9/24 1:24:17/

点题

WSL(Windows Subsystem for Linux)是一个为在 Windows 系统上能够原生运行 Linux 二进制可执行文件(如 Bash, sed, awk 等)提供的兼容层。当你在 Windows 中安装并运行 WSL 时,实际上是在 Windows 内核之上启动了一个轻量级的 Linux 系统。

如果你运行 WSL 命令而系统直接启动 Ubuntu,这可能是因为你的 WSL 默认配置为 Ubuntu。WSL 允许你安装多种 Linux 发行版,如 Ubuntu、Debian、openSUSE 等。如果你已经安装了多个 Linux 发行版,可以通过wsl -l 命令列出所有已安装的发行版,然后使用 wsl -s <发行版名称> 命令来设置默认的 Linux 发行版。

WSL 让你能在不离开 Windows 环境的情况下使用 Linux 环境和命令行工具,对于开发人员尤其有用,因为他们可以在同一个系统上同时使用 Windows 和 Linux 工具和环境。

科普

Linux 二进制文件

Linux 二进制文件通常指的是已编译的程序,这些程序是针对 Linux 操作系统及其硬件平台(如 x86, ARM 等)预先编译好的。这些文件通常可以直接在 Linux 系统上执行,而无需额外的编译步骤。Linux 二进制文件有几种不同的格式,但最常见的是 ELF(Executable and Linkable Format)格式。

ELF(Executable and Linkable Format)
ELF 文件是最常见的 Linux 可执行文件和共享库(动态链接库)格式。它包含了程序运行所必需的代码和数据,以及操作系统如何运行它的信息。ELF文件主要有以下几个部分:

头部:包含了文件的定义和如何解释文件内容的元数据。
程序头表:指示系统如何创建进程。
段:包括代码段、数据段、BSS 段等,它们分别包含了程序的机器码、初始化数据和未初始化数据。
节:提供了调试、注释、符号表等信息。
这种格式的文件直接支持动态链接和静态链接,并且是跨平台的,意味着在不同的处理器架构上有相应的变体版本,以适应不同的硬件环境。

应用
在 Linux 环境中,用户通常通过包管理器(如 APT, YUM 等)下载并安装这些预编译的二进制文件,而无需从源代码手动编译。这样不仅便于管理,还能确保软件与系统的兼容性和安全性。

.so 文件

在 Linux 系统中,.so 文件是一个"共享对象"(Shared Object)文件,类似于 Windows 系统中的 .dll(Dynamic-Link Library)文件。这些文件包含程序运行时可以共享和重用的代码和数据。共享对象文件是动态链接的,意味着在运行时而不是在编译时链接到应用程序中。

用途
.so 文件主要用于以下目的:
代码复用:不同的程序可以使用相同的库中的功能,而无需在每个程序中重复这些代码。
内存节省:由于代码是共享的,多个正在运行的程序可以使用同一份内存中的库代码,而不是每个程序都有一份自己的副本。
方便更新:更新库文件时,只需要替换单个 .so 文件,而不需要重新编译使用该库的每个程序。
使用
在程序编译时,如果程序员希望使用动态库,可以在链接阶段指定相应的 .so 文件。运行时,Linux 的动态链接器(如 ld-linux.so)会查找这些共享库,并将它们加载到内存中,以供程序使用。

由于 .so 文件的这些特性,它们在开发大型软件或系统时非常有用,可以显著提高资源的效率和软件的维护性。


http://www.ppmy.cn/news/1456665.html

相关文章

CSS精灵图、字体图标、HTML5新增属性、界面样式和网站 favicon 图标

精灵图 为什么要使用精灵图 一个网页中往往会应用很多小的背景图像作为修饰&#xff0c;当网页中的图像过多时&#xff0c;服务器就会频繁地接收和发送请求图片&#xff0c;造成服务器请求压力过大&#xff0c;这将大大降低页面的加载速度,因此&#xff0c;为了有效地减少服务…

C++入门 ——类和对象(二)

this指针 this指针的引出 我们先来定义一个日期类 Date class Date { public:void Init(int year, int month, int day){_year year;_month month;_day day;}void Print(){cout <<_year<< "-" <<_month << "-"<< _da…

Gradio之blocks灵活搭建页面

这里写目录标题 搭建一个UI界面搭建上半部分的框架比例调节以及其他效果搭建下半部分左边部分搭建下半部分右边部分拓展-CSS的应用 使用标签搭建第二个页面示例 补充AccordionGroup() 搭建一个UI界面 搭建上半部分的框架 如下图&#xff0c;我们想要基本还原下图右边的UI界面…

iOS--runloop的初步认识

runloop的初步认识 简单认识runloopEvent looprunloop其实就是个对象NSRunloop和CFRunLoopRef的依赖关系runloop与线程runloop moderunloop sourceCFRunLoopSourceCFRunLoopObserverCFRunLoopTimer runloop的实现runloop的获取添加ModeCFRunLoopAddCommonMode 添加Run Loop Sou…

Ansible——lookup,过滤器

文章目录 Ansible——lookup,过滤器lookup读取文件lookup生成随机密码lookup读取环境变量lookup读取Linux命令的执行结果lookup读取template变量替换后的文件lookup读取配置文件lookup读取DNS解析的值 过滤器过滤器使用的位置过滤器对普通变量的操作过滤器对文件路径的操作过滤…

复现SMO算法:序列最小优化的启发式方法【三、算法原理揭秘-2】

接下来的内容将转向SMO算法的第二个核心组成部分——选择要优化的乘数的启发式方法。在这篇博客中&#xff0c;我们将探讨算法如何通过启发式选择策略高效地识别和更新拉格朗日乘数。通过对比直接优化的分析方法和启发式方法的策略选择&#xff0c;我们能够更全面地理解SMO算法…

详解MySQL常用的数据类型

前言 MySQL是一个流行的关系型数据库管理系统&#xff0c;它支持多种数据类型&#xff0c;以满足不同数据处理和存储的需求。理解并正确使用这些数据类型对于提高数据库性能、确保数据完整性和准确性至关重要。本文将详细介绍MySQL中的数据类型&#xff0c;包括数值类型、字符…

口感与风味的完善结合:精酿啤酒的多样风格

啤酒的世界是丰富多彩的&#xff0c;不同的啤酒有着各自与众不同的口感和风味。而Fendi club啤酒&#xff0c;作为精酿啤酒的代表&#xff0c;以其多样化的风格和卓着的口感&#xff0c;吸引了无数啤酒爱好者的目光。 Fendi club啤酒的多样风格&#xff0c;首先体现在其原料的选…