在 Linux/Windows/macOS 上编译 SGX-hardware 的 test-sgx 工具:新手快速上手指南

在 Linux/Windows/macOS 上编译 SGX-hardware 的 test-sgx 工具:新手快速上手指南 在 Linux/Windows/macOS 上编译 SGX-hardware 的 test-sgx 工具新手快速上手指南【免费下载链接】SGX-hardwareThis is a list of hardware which supports Intel SGX - Software Guard Extensions.项目地址: https://gitcode.com/gh_mirrors/sg/SGX-hardwareSGX-hardware 是一个记录支持 Intel SGXSoftware Guard Extensions软件守护扩展硬件的开源清单项目其中的test-sgx是一个轻量级命令行工具可以一分钟内告诉你当前 CPU 是否支持 SGX、是否已在 BIOS 中开启、 enclave 最大能有多大。本文是一份面向新手的完整指南教你在 Linux、Windows、macOS 三大系统上快速编译并运行 test-sgx 工具。 一句话总结克隆源码 → 一行命令编译 → 运行查看输出三步搞定 SGX 检测。test-sgx 是什么能检测出什么test-sgx 通过 CPUID 指令和 MSR 寄存器读取枚举出你当前系统上 CPU 的 SGX 能力包括检测项说明是否 Genuine Intel CPU非 Intel 处理器会直接提示并退出SGX1 / SGX2 指令支持判断 CPU 是否具备 SGX 叶子指令EPC 内存段列出 SGX 可用内存区域的地址和大小IA32_FEATURE_CONTROL 寄存器判断 SGX 是否已被 BIOS 全局启用SGX Launch Enclave 公钥哈希仅在 Linux 下以 root 权限读取整个工具由三个 C 源文件组成各司其职test-sgx.c程序入口串联所有检测流程cpuid.c跨平台含非特权CPUID 能力探测rdmsr.cLinux 特权代码通过/dev/cpu/0/msr读取 SGX 相关 MSR 寄存器test-sgx.h公共头文件定义程序名和失败退出逻辑第一步获取 SGX-hardware 源码先克隆仓库到本地git clone https://gitcode.com/gh_mirrors/sg/SGX-hardware cd SGX-hardware克隆完成后你会看到test-sgx.c、cpuid.c、rdmsr.c三个源文件以及一个 MakefileLinux/macOS 下可用来一键编译。Linux 上编译 test-sgx两种快速方式方式一Makefile 一键编译推荐项目自带 Makefile只需两条命令make # 编译出 test-sgx 可执行文件 make test # 编译并直接运行make clean可以清理所有编译产物*.o、*.obj、*.exe。方式二gcc 手动编译如果你想看完整的编译参数执行与 Makefile 内部完全一致gcc -Wl,--no-as-needed -Wall -Wextra -Wpedantic -masmintel -o test-sgx -lcap cpuid.c rdmsr.c test-sgx.c几个参数的作用-lcap链接 Linux 能力库用于判断 root 权限-masmintel指定 Intel 汇编语法源码里有内联汇编-Wall -Wextra -Wpedantic是全警告模式项目代码本身零警告。⚠️ Linux 常见报错找不到 sys/capability.h如果编译时报错fatal error: sys/capability.h: No such file or directory说明缺少 Linux 能力开发库安装一下即可sudo apt-get install libcap-dev然后重新编译。Windows 上编译 test-sgxVisual Studio 一行命令Windows 下使用 Visual Studio 自带的cl编译器。先在开始菜单中打开x64 Native Tools Command Prompt for VS 2022或其他版本的对应命令行进入源码目录后执行cl test-sgx.c cpuid.c rdmsr.c编译成功后当前目录会生成test-sgx.exe直接双击或在命令行运行即可。 小提示Windows 下rdmsr.c的 MSR 读取部分不会生效它依赖 Linux 的/dev/cpu/0/msr程序会跳过这部分CPUID 检测结果不受影响。macOS 上编译 test-sgxClang 一行命令macOS 自带 Clang终端进入源码目录后执行clang -Wall -Wextra -Wpedantic -masmintel -stdc2x -Wno-gnu-binary-literal -o test-sgx cpuid.c rdmsr.c test-sgx.c参数说明-stdc2x因为源码用到了 C2x 标准的二进制数字字面量如0b1需要加-Wno-gnu-binary-literal消除警告。运行 test-sgx三种典型输出怎么读编译完成后Linux 下建议用sudo ./test-sgx运行root 权限能读到完整的 MSR 信息其他系统直接运行即可。输出结尾的结论通常只有三种情况情况一✅ SGX 完全可用Supports SGX SGX1 leaf instructions (SGX1): 1 The maximum supported enclave size in 64-bit mode is 2^36看到Supports SGX且SGX1或SGX2为 1说明 CPU 支持且 BIOS 已启用 SGX可以直接开始 SGX 开发仍需安装官方 Intel SGX 驱动。情况二⚠️ CPU 支持但 BIOS 没开Supports SGX SGX Launch Configuration (SGX_LC): 1 SGX1 leaf instructions (SGX1): 0CPU 本身支持 SGX但 BIOS 未全局启用——典型的例子是 2017 年款的 MacBook Pro。此时进 BIOS 找到 SGX 开关打开即可Mac 用户基本无解可参考硬件清单中的无 BIOS 支持列表。情况三❌ 不支持Does not support SGX常见于云主机如 AWS/GCP 部分实例 CPU 支持但 BIOS 关闭、虚拟机宿主机支持但 Hypervisor 未透传以及 2015 年前的老硬件。 更多买前必看信息项目 README.md 里维护了完整的桌面 CPU、笔记本、服务器、云厂商 SGX 硬件清单以及CPU 支持但 BIOS 不支持的避坑列表例如多款 MacBook Pro 和 Surface Book 2。常见问题 FAQQ1为什么 Makefile 只适用于 Linux 和 macOS因为 Makefile 里写的是gcc命令Windows 的 Visual Studio 工具链使用cl命令不同直接手动执行即可。Q2在虚拟机里跑结果可信吗需谨慎。宿主机支持 SGX 不代表虚拟机可用Hypervisor 不透传时 test-sgx 会报告不支持。该工具反映的是你当前所在的这个系统的能力而非整颗 CPU 的纸面能力。Q3检测通过了下一步做什么test-sgx 只是能力枚举工具。要真正运行 Enclave还需安装对应操作系统的官方 Intel SGX 驱动含 Launch Enclave。Q4项目里的 Rakefile 和 Gemfile 是干什么的Rakefile Gemfile 是项目的 Markdown 校验工具链基于 Ruby 的 html-proofer只用于维护 README 链接有效性与编译 test-sgx 无关新手可完全忽略。总结系统编译命令关键点Linuxmake或 gcc 一行命令缺sys/capability.h时安装libcap-devWindowscl test-sgx.c cpuid.c rdmsr.c用 x64 Native Tools 命令行macOSclang 一行命令带-stdc2x需抑制二进制字面量警告按照以上三步——克隆、编译、运行你就可以在任意一台机器上快速确认它的 Intel SGX 能力为后续的 SGX 开发或硬件采购做出准确判断。【免费下载链接】SGX-hardwareThis is a list of hardware which supports Intel SGX - Software Guard Extensions.项目地址: https://gitcode.com/gh_mirrors/sg/SGX-hardware创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考