点题
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 文件的这些特性,它们在开发大型软件或系统时非常有用,可以显著提高资源的效率和软件的维护性。