源代码组织
你可以在线浏览源代码此处。
include/
kBuild/
kBuild/ 包含相关的 kBuild 发行版,详情请参阅kBuild页面。
out/
out/ 是输出目录。构建系统将所有输出代码放入此处,并按平台和发布/调试版本进行分类。
src/
自然地,src/ 是迄今为止最大、最复杂的子目录树。对于以下内容,对VirtualBox 架构的基本理解会有所帮助。以下按子目录列出:
- src/libs/包含我们依赖的各种特定版本的库。我们不能让客户陷入“依赖地狱”;因此,我们将这些库静态编译到 VirtualBox 二进制文件中。这些库随附的各种许可都记录在用户手册的附录中。
- src/VBox/包含 VirtualBox 的大部分代码,同样按子目录分类。其中包含:- src/VBox/Frontends/:各种用户界面都位于此目录下
- src/VBox/Debugger/:一个(不完整的)客户机调试器,仍在发展中。
- src/VBox/Devices/:用于 VMM 虚拟化的各种客户机设备的代码,例如音频、网络和显卡,以及虚拟硬盘和 USB 控制器。
- src/VBox/Disassembler/:VirtualBox 反汇编器(VM 核心的一部分),受其他各种 VirtualBox 组件(主要来自下方的 VMM)委托分析客户机代码。
- src/VBox/Additions/:Windows 和 Linux 的“客户机增强功能”(将来可能更多);这段代码必须安装在客户机内部,以优化其性能和可用性。构建系统将这段代码编译成一个 ISO 文件,可以作为虚拟机的虚拟 CD-ROM 驱动器挂载,如用户手册中所述。
- src/VBox/HostServices/:
- src/VBox/Installer/:Linux 和 Windows 安装程序代码,位于各自的子目录中。对于 Linux,我们使用一些与 tarball 捆绑的 shell 脚本;对于 Windows,我们构建一个 .MSI 包。
- src/VBox/Main/:COM/XPCOM 后端(参见COM-XPCOM 互操作性),位于 VMM 代码之上(参见下文)。VirtualBox 的各个组件共享此部分。
- src/VBox/HostDrivers/:在此目录下,您会找到以下在宿主系统上运行的设备驱动程序(或相应的内核模块):- src/VBox/HostDrivers/VBoxTAP/:包含 Windows 的 TAP 驱动程序(Linux 不需要,因为 Linux 内核自带)。(这是一个*宿主*驱动程序,因此不属于上面的- Devices/。)
- src/VBox/HostDrivers/Support/:主要的 VirtualBox 宿主驱动程序,允许 VMM 控制您的系统。一个真正的“特洛伊木马”,但它是友好的。
 
- src/VBox/Runtime/:VirtualBox 可移植运行时。
- src/VBox/VMM/:虚拟机监视器,VM 核心的一部分。
 
tools/
在tools/中,我们放置了一些不希望依赖宿主平台上的工具,这主要是因为这些工具的某些版本已知存在 bug,我们希望确保使用特定版本。
这些工具按不同平台分类到子目录中:
- darwin.amd64和- darwin.x86包含:
- linux.amd64和- linux.x86包含:- bin/yasm是YASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
 
- solaris.amd64和- solaris.x86包含:
- win.amd64和- win.x86包含:- bin/doxygen.exe、- bin/doxyindexer.exe、- bin/doxysearch.cgi,exe、- bin/libclang.dll是 Doxygen 工具,对开发和从源代码中提取文档很有用,源代码可从此处获取。
- bin/iasl.exe是 ACPI DSL 编译器,源代码可从此处获取。
- bin/msvcrt.dll是 Microsoft Visual C 运行时,许多可执行文件和库都需要它。
- bin/xsltproc.exe、- bin/libxslt.dll、- bin/libexslt.dll、- bin/libxml2.dll、- bin/iconv.dll、- bin/zlib1.dll是来自此处的 XSLT 处理工具和库(以及一些必需的库,这些库包含在此处的 Windows 二进制文件中)。
- bin/yasm.exe是YASM,一个对老牌 NASM 汇编器的重写,该项目在 BSD 许可下发布。
 
  注意: 查看 TracWiki 获取使用维基的帮助。
     
  

