当前位置: 首页 > article >正文

open-vm-tools 构建与编译完全手册:从源代码到可执行文件的完整流程

open-vm-tools 构建与编译完全手册从源代码到可执行文件的完整流程【免费下载链接】open-vm-toolsOfficial repository of VMware open-vm-tools project项目地址: https://gitcode.com/gh_mirrors/op/open-vm-toolsopen-vm-tools 是 VMware 官方开源项目为 Linux 和其他类 Unix 虚拟机提供完整的虚拟化增强功能。本文将详细介绍如何从源代码构建和编译 open-vm-tools提供完整的构建流程、配置选项和最佳实践。无论是开发人员还是系统管理员都能通过本指南掌握 open-vm-tools 的构建技巧。 准备工作与环境要求在开始构建之前确保您的系统满足以下要求系统要求Linux 发行版推荐 Ubuntu、RHEL、CentOS、Fedora 等至少 2GB 可用磁盘空间512MB 可用内存基本的开发工具链构建依赖包# Ubuntu/Debian sudo apt-get install build-essential autoconf automake libtool \ libfuse-dev libgtkmm-3.0-dev libnotify-dev libxtst-dev \ libxss-dev libssl-dev libmspack-dev libpam0g-dev \ libxinerama-dev libxrandr-dev libxcomposite-dev \ libasound2-dev libcurl4-openssl-dev # RHEL/CentOS/Fedora sudo yum groupinstall Development Tools sudo yum install autoconf automake libtool fuse-devel \ gtkmm30-devel libnotify-devel libXtst-devel \ libXScrnSaver-devel openssl-devel libmspack-devel \ pam-devel libXinerama-devel libXrandr-devel \ libXcomposite-devel alsa-lib-devel curl-devel 获取源代码与初始化首先从官方仓库克隆源代码git clone https://gitcode.com/gh_mirrors/op/open-vm-tools cd open-vm-tools/open-vm-tools项目结构概览lib/- 核心库文件services/- 服务插件modules/- 内核模块tools/- 命令行工具configure.ac- Autoconf 配置文件 构建配置详解open-vm-tools 使用 GNU Automake 构建系统配置过程非常灵活基本配置命令# 生成配置脚本 autoreconf -i # 基本配置 ./configure # 启用 Service Discovery 插件 ./configure --enable-servicediscovery # 启用 Salt Minion 支持 ./configure --enable-salt-minion # 查看所有配置选项 ./configure --help重要配置选项插件配置--enable-containerinfo- 容器信息插件需要额外依赖--enable-servicediscovery- 服务发现插件--enable-multimon- 多显示器支持--enable-vgauth- VGAuth 认证服务路径配置--prefix/usr- 安装前缀--sysconfdir/etc- 配置文件目录--localstatedir/var- 状态文件目录功能开关--disable-docs- 禁用文档构建--disable-tests- 禁用测试构建--with-gtk2- 使用 GTK2默认 GTK3️ 完整构建流程步骤 1生成构建系统# 进入项目根目录 cd open-vm-tools/open-vm-tools # 生成配置脚本 autoreconf -i # 检查系统环境 ./configure --prefix/usr \ --sysconfdir/etc \ --localstatedir/var \ --enable-servicediscovery \ --enable-vgauth步骤 2编译源代码# 并行编译使用所有 CPU 核心 make -j$(nproc) # 或者指定编译线程数 make -j4编译输出说明核心库文件位于lib/.libs/可执行文件位于services/vmtoolsd/.libs/插件模块位于各插件目录的.libs/子目录步骤 3安装与配置# 安装到系统 sudo make install # 更新动态链接库缓存 sudo ldconfig # 启用服务systemd 系统 sudo systemctl enable vmtoolsd sudo systemctl start vmtoolsd # 启用服务SysV init 系统 sudo service vmtoolsd start sudo chkconfig vmtoolsd on 高级构建技巧交叉编译支持open-vm-tools 支持交叉编译适用于嵌入式系统# 设置交叉编译环境 export CCarm-linux-gnueabihf-gcc export CXXarm-linux-gnueabihf-g export ARarm-linux-gnueabihf-ar export RANLIBarm-linux-gnueabihf-ranlib # 配置时指定目标平台 ./configure --hostarm-linux-gnueabihf \ --buildx86_64-pc-linux-gnu调试版本构建# 启用调试符号 ./configure CFLAGS-g -O0 CXXFLAGS-g -O0 # 或者使用专门的调试配置 ./configure --enable-debug静态链接构建# 静态链接核心库 ./configure --enable-static 插件系统详解open-vm-tools 采用模块化设计各插件独立构建核心插件构建GuestInfo 插件- 收集虚拟机信息# 插件源码位置 services/plugins/guestInfo/TimeSync 插件- 时间同步# 插件源码位置 services/plugins/timeSync/PowerOps 插件- 电源管理# 插件源码位置 services/plugins/powerOps/可选插件配置容器信息插件需要额外依赖# 安装依赖Ubuntu sudo apt-get install libcurl4-openssl-dev \ protobuf-compiler libprotobuf-dev \ protobuf-compiler-grpc libgrpc-dev # 配置时启用 ./configure --enable-containerinfoyes服务发现插件# 启用服务发现 ./configure --enable-servicediscovery 常见问题与解决方案编译错误处理错误 1缺少 autoconf/automake解决方案sudo apt-get install autoconf automake libtool错误 2缺少开发库解决方案根据错误信息安装对应的 -dev 或 -devel 包错误 3权限问题解决方案确保有足够的磁盘空间和写权限运行时问题问题 1服务无法启动# 查看日志 sudo journalctl -u vmtoolsd # 调试模式启动 sudo vmtoolsd -f -v问题 2插件加载失败# 检查插件路径 ls /usr/lib/open-vm-tools/plugins/common/ # 查看加载日志 sudo vmtoolsd -f -v 21 | grep -i plugin 自定义构建配置修改编译参数编辑configure.ac或创建自定义配置文件# 创建自定义配置 cat custom_config.sh EOF #!/bin/bash export CFLAGS-O2 -marchnative -pipe export CXXFLAGS${CFLAGS} export LDFLAGS-Wl,-O1,--sort-common,--as-needed,-z,relro ./configure \ --prefix/opt/vmtools \ --enable-debug \ --enable-servicediscovery \ --with-fuse EOF chmod x custom_config.sh ./custom_config.sh内核模块构建open-vm-tools 包含多个内核模块# 内核模块源码位置 modules/linux/ # 构建内核模块 cd modules/linux make -C /lib/modules/$(uname -r)/build M$PWD modules # 安装内核模块 sudo make -C /lib/modules/$(uname -r)/build M$PWD modules_install 构建验证与测试验证构建结果# 检查核心组件 ls -la /usr/bin/vmtoolsd ls -la /usr/lib/open-vm-tools/plugins/ # 测试基本功能 vmtoolsd --version vmware-toolbox-cmd --version # 验证插件加载 sudo vmtoolsd -f -v 21 | grep plugin.*loaded运行测试套件# 运行单元测试 cd tests/ make check # 特定模块测试 cd testPlugin/ make test # 调试测试 cd testDebug/ make ./testDebug 性能优化构建优化编译参数# 针对特定 CPU 优化 ./configure CFLAGS-O3 -marchnative -mtunenative \ CXXFLAGS-O3 -marchnative -mtunenative # 链接时优化 ./configure CFLAGS-O3 -flto \ CXXFLAGS-O3 -flto \ LDFLAGS-flto精简构建# 仅构建必要组件 ./configure --disable-docs \ --disable-tests \ --disable-debug \ --disable-vgauth 打包与分发创建 DEB 包Debian/Ubuntu# 安装打包工具 sudo apt-get install devscripts debhelper dh-autoreconf # 生成源码包 make dist # 构建 DEB 包 dpkg-buildpackage -us -uc创建 RPM 包RHEL/CentOS/Fedora# 安装打包工具 sudo yum install rpm-build rpmdevtools # 准备构建环境 rpmdev-setuptree # 生成 spec 文件 ./configure make dist cp open-vm-tools-*.tar.gz ~/rpmbuild/SOURCES/ # 构建 RPM rpmbuild -ba open-vm-tools.spec 持续集成与自动化使用 Docker 构建FROM ubuntu:22.04 RUN apt-get update apt-get install -y \ build-essential autoconf automake libtool \ libfuse-dev libgtkmm-3.0-dev libnotify-dev \ libxtst-dev libxss-dev libssl-dev libmspack-dev \ libpam0g-dev git RUN git clone https://gitcode.com/gh_mirrors/op/open-vm-tools WORKDIR /open-vm-tools/open-vm-tools RUN autoreconf -i ./configure make -j4GitHub Actions 配置示例name: Build open-vm-tools on: [push, pull_request] jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkoutv2 - name: Install dependencies run: | sudo apt-get update sudo apt-get install -y build-essential autoconf automake libtool - name: Configure and build run: | cd open-vm-tools autoreconf -i ./configure make -j4 - name: Run tests run: | cd open-vm-tools make check 最佳实践总结保持依赖更新定期更新系统依赖包使用版本控制跟踪配置更改和补丁测试不同配置在生产前测试多种配置选项监控构建日志关注警告和错误信息优化构建时间使用并行编译和缓存文档化配置记录所有自定义配置选项 相关资源与文档官方文档位置docs/api/services/- API 文档README- 项目说明configure.ac- 配置脚本源码重要配置文件tools.conf- 工具配置文件services/vmtoolsd/- 主服务源码通过本指南您应该能够成功构建和编译 open-vm-tools。记住构建过程可能因系统和需求而异建议根据实际情况调整配置参数。Happy building! 【免费下载链接】open-vm-toolsOfficial repository of VMware open-vm-tools project项目地址: https://gitcode.com/gh_mirrors/op/open-vm-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关文章:

open-vm-tools 构建与编译完全手册:从源代码到可执行文件的完整流程

open-vm-tools 构建与编译完全手册:从源代码到可执行文件的完整流程 【免费下载链接】open-vm-tools Official repository of VMware open-vm-tools project 项目地址: https://gitcode.com/gh_mirrors/op/open-vm-tools open-vm-tools 是 VMware 官方开源项…...

m4s-converter:让B站缓存视频真正为你所用的本地化工具

m4s-converter:让B站缓存视频真正为你所用的本地化工具 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 一、问题象限:B站…...

TrollInstallerX:iOS 14.0-16.6.1高效安装TrollStore的专业工具

TrollInstallerX:iOS 14.0-16.6.1高效安装TrollStore的专业工具 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX TrollInstallerX是一款专为iOS 14.0-16.6.1设…...

Hyper-V DDA图形界面终极指南:5分钟搞定设备直通配置

Hyper-V DDA图形界面终极指南:5分钟搞定设备直通配置 【免费下载链接】DDA 实现Hyper-V离散设备分配功能的图形界面工具。A GUI Tool For Hyper-Vs Discrete Device Assignment(DDA). 项目地址: https://gitcode.com/gh_mirrors/dd/DDA 还在为复杂的PowerSh…...

安卓画廊管理工具:EhViewer开源应用全解析

安卓画廊管理工具:EhViewer开源应用全解析 【免费下载链接】EhViewer 🥥 A fork of EhViewer, feature requests are not accepted. Forked from https://gitlab.com/NekoInverter/EhViewer 项目地址: https://gitcode.com/GitHub_Trending/ehvi/EhVie…...

MySQL Workbench导入.sql文件保姆级教程(附常见错误解决方案)

MySQL Workbench导入.sql文件全流程详解与实战避坑指南 刚接触MySQL数据库管理时,导入.sql文件可能是每个开发者都会遇到的基础操作。但看似简单的过程,却常常因为字符编码、文件路径或权限问题让新手手足无措。本文将带你从零开始,用最直观的…...

从 ‘Unable to make field...‘ 错误聊聊 Java 模块化(JPMS)给 Android 开发带来的那些‘坑‘与应对策略

从 "Unable to make field..." 错误解析 Java 模块化对 Android 开发的深层影响 当你在 Android Studio 中看到 "Unable to make field private final java.lang.String java.io.File.path accessible" 这样的错误时,表面上看是一个简单的反射访…...

保姆级教程:用本地仓库模拟Maven多模块依赖冲突(附版本锁定技巧)

从零构建Maven多模块实验:深度解析依赖冲突与版本锁定策略 实验环境搭建与基础概念 让我们从一个真实的开发场景开始:假设你正在维护一个电商平台的后端系统,这个系统由订单服务(order-service)、支付服务(…...

突破数字身份验证瓶颈:phone2qq革新手机号-QQ号关联查询技术

突破数字身份验证瓶颈:phone2qq革新手机号-QQ号关联查询技术 【免费下载链接】phone2qq 项目地址: https://gitcode.com/gh_mirrors/ph/phone2qq 副标题:如何在45秒内完成传统6分钟的身份验证流程? 一、问题溯源:数字身份…...

GitHub 智能汉化插件:高效消除英文界面障碍的终极方案

GitHub 智能汉化插件:高效消除英文界面障碍的终极方案 【免费下载链接】github-chinese GitHub 汉化插件,GitHub 中文化界面。 (GitHub Translation To Chinese) 项目地址: https://gitcode.com/gh_mirrors/gi/github-chinese GitHub 作为全球最大…...

注册获取阿里云qwen大模型api key

1.进入阿里云官网,然后注册登录并完善个人信息https://cn.aliyun.com/2.搜索框搜索api key 或点击模型,最下边的api key-->创建...

[具身智能-286]:YOLO 的姿态估计

YOLO 的姿态估计(Pose Estimation)功能,已经从早期的“附加功能”演变为如今高度集成的核心能力。它不仅继承了 YOLO 系列“快”的基因,更在精度和架构上经历了数次颠覆性的进化。简单来说,YOLO 的姿态估计不再只是“画…...

深入解析std::unique_lock:C++11线程同步的灵活利器

1. 为什么需要std::unique_lock? 当你第一次接触多线程编程时,可能会觉得用mutex直接加锁解锁就足够了。但实际开发中,我遇到过太多因为锁管理不当导致的死锁问题。比如某个函数有多个返回路径,如果每个return前都要手动unlock&am…...

VisualCppRedist AIO:终极Windows运行时依赖一站式解决方案

VisualCppRedist AIO:终极Windows运行时依赖一站式解决方案 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist VisualCppRedist AIO是一个革命性的开源项…...

深入解析SolarWinds Serv-U目录遍历漏洞(CVE-2024-28995)的利用与防御

1. SolarWinds Serv-U目录遍历漏洞深度剖析 最近安全圈里热议的CVE-2024-28995漏洞,本质上是个典型的目录遍历漏洞。简单来说,就是攻击者能够通过构造特殊请求,像玩"跳格子"游戏一样,一层层跳出FTP服务器的访问限制范围…...

网络安全如何快速入门,新手也能少走半年弯路!收藏这篇就够了

后台总收到私信:“学网安该先看 Linux 还是先学 Burp?”“找了一堆教程,越学越乱怎么办?”—— 其实不是你学得慢,是没找对循序渐进的路径。很多人一上来就跟风学工具、刷漏洞,结果基础不牢,后期…...

Windows 11 系统下 Maven 3.9.0 一站式配置与开发环境集成指南

1. 为什么选择Maven 3.9.0? 如果你正在Windows 11上开发Java项目,Maven绝对是你不可或缺的得力助手。作为一个项目管理和构建工具,Maven能帮你自动下载依赖库、统一项目结构、管理构建生命周期。最新发布的3.9.0版本在性能上有显著提升&#…...

【深度解析】Godzilla流量特征与实战检测技巧

1. Godzilla流量核心特征解析 第一次接触Godzilla流量时,我和很多安全工程师一样被它独特的通信模式所迷惑。这种基于Java编写的Webshell管理工具,在攻防演练中出现的频率越来越高。经过多次实战分析,我总结出几个关键特征点,这些…...

突破二维限制:开源工具ImageToSTL实现图片转3D模型全攻略

突破二维限制:开源工具ImageToSTL实现图片转3D模型全攻略 【免费下载链接】ImageToSTL This tool allows you to easily convert any image into a 3D print-ready STL model. The surface of the model will display the image when illuminated from the left sid…...

【实战指南】登录界面全方位测试策略与案例分析

1. 登录界面测试为什么重要? 登录界面是用户进入系统的第一道门,它的好坏直接影响用户体验和系统安全。想象一下,当你打开一个APP或者网站,第一眼看到的就是登录界面。如果这个界面设计不合理、反应慢、或者经常出错,你…...

为什么83%的医疗PHP系统脱敏失效?——基于127家三甲医院审计报告的脱敏逻辑漏洞图谱分析

第一章:医疗PHP系统数据脱敏失效的审计全景图在医疗信息化系统中,PHP仍广泛用于HIS、LIS及预约平台等后端服务。然而,大量遗留系统在数据脱敏环节存在设计缺陷或配置疏漏,导致患者姓名、身份证号、病历号、手机号等敏感字段在日志…...

图解Simple-BEV核心模块:从2D图像到3D BEV特征图的完整数据流解析

图解Simple-BEV核心模块:从2D图像到3D BEV特征图的完整数据流解析 想象一下,当你驾驶汽车时,眼睛看到的只是前方有限的视野,而大脑却能神奇地将这些二维画面重构为三维空间感知。这正是自动驾驶系统中BEV(鸟瞰图&#…...

CosyVoice语音大模型快速部署:开箱即用,5分钟搭建个人语音合成系统

CosyVoice语音大模型快速部署:开箱即用,5分钟搭建个人语音合成系统 1. 为什么选择CosyVoice语音大模型 语音合成技术正在改变我们与数字世界的交互方式。CosyVoice作为阿里巴巴通义实验室研发的多语言语音生成模型,以其出色的自然度和易用性…...

艾米森冲刺港股:年营收1542万 亏4898万

雷递网 雷建平 4月7日武汉艾米森生命科技股份有限公司(简称:“艾米森”)日前更新招股书,准备在港交所上市。年营收1542万 亏4898万艾米森于2015年1月成立,是一家早期癌症检测公司,战略聚焦于高发病率、高死…...

解锁本科论文「无痛通关」密码:Paperxie 毕业论文功能全维度拆解,从选题到定稿一步到位

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AIPPThttps://www.paperxie.cn/ai/dissertationhttps://www.paperxie.cn/ai/dissertation 引言:毕业季的「论文困局」,AI 正在打破僵局 每年毕业季,「写论文」几乎是所有…...

Pretext:值得关注的文本排版引擎陨

一、语言特性:Java 26 与模式匹配进化 1.1 Java 26 语言级别支持 IDEA 2026.1 EAP 最引人注目的变化之一,就是新增 Java 26 语言级别支持。这意味着开发者可以提前体验和测试即将在 JDK 26 中正式发布的语言特性。 其中最重要的变化是对 JEP 530 的全面支…...

intv_ai_mk11企业应用:法务合同审查要点提取+风险条款标红提示自动化流程

intv_ai_mk11企业应用:法务合同审查要点提取风险条款标红提示自动化流程 1. 企业法务合同审查的痛点 企业法务部门每天需要处理大量合同文件,传统人工审查方式存在几个明显痛点: 效率低下:一份10页的合同通常需要30-60分钟人工…...

Sonic云真机平台二次开发指南:自定义插件与扩展开发

Sonic云真机平台二次开发指南:自定义插件与扩展开发 【免费下载链接】sonic-server 🎉Back end of Sonic cloud real machine platform. Sonic云真机平台后端服务。 项目地址: https://gitcode.com/gh_mirrors/so/sonic-server Sonic云真机平台是…...

5MW海上永磁风电直驱+1200V风电并网Simulink仿真:矢量控制与混合储能系统

5MW海上永磁风电直驱1200V风电并网simulink仿真!采用矢量控制,混合储能采用超级电容与锂电池,采用滑动平均滤波算法分配高频与低频功率。 有参考!! 凌晨三点半盯着Simulink波形图突然跳红,我猛灌一口凉透的…...

永磁体磁场的有限元模拟(FEA仿真)

磁场是看不见摸不着的,那么怎样画出磁场的形状、描绘磁场的走向呢?借助有限元模拟是很好的方式。 有限元模拟也叫FEA仿真(Finite Element Analysis),是使用计算机利用复杂的数学方程、模型和公式对真实物理系统进行模拟…...