You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Linux上通过vcpkg交叉编译适用于Windows的软件包?

Linux下用VCPKG交叉编译Windows软件包的问题解答

1. 交叉编译方向正确,但细节执行有误

你想在Linux上生成Windows可用的静态库,这个需求逻辑没问题,但因为triplet配置错误,导致输出了Linux平台的.a库,而非Windows的.lib。

2. Triplet配置存在明显错误

你当前的x64-windows-static triplet里,set(VCPKG_CMAKE_SYSTEM_NAME Linux)这行完全错误——这个变量是用来指定目标编译平台的,要生成Windows库,必须设置为Windows。正确的核心配置应该是:

set(VCPKG_TARGET_ARCHITECTURE x64)
set(VCPKG_CRT_LINKAGE dynamic) # 可根据需求改为static
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Windows)
# 不需要自定义OPTIONS_CROSS,vcpkg会自动适配交叉编译工具链

另外,你得先在Linux上装好Windows交叉编译工具链,比如Debian/Ubuntu系可以执行sudo apt install mingw-w64来安装,vcpkg依赖这些工具生成Windows格式的二进制文件。

3. 这个需求完全可行

只要配置正确的triplet并装好交叉编译工具链,就能在Linux上用vcpkg生成Windows可用的静态库:

  • 若用MinGW工具链,生成的静态库后缀可能还是.a,但这是Windows兼容的格式,能直接在Windows的MinGW环境下使用
  • 若需要MSVC格式的.lib,配置会更复杂,需要用Clang-CL或远程调用MSVC工具链,一般来说MinGW生成的库足以满足多数Windows开发场景

修正后的操作流程:

  • 安装mingw-w64交叉编译工具链
  • 修改triplet,将VCPKG_CMAKE_SYSTEM_NAME改为Windows,移除错误的自定义变量
  • 重新执行vcpkg install openssl --triplet=x64-windows-static
  • 导出后就能得到Windows可用的库文件

内容的提问来源于stack exchange,提问作者honeysuckle1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 02:22:10