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

在Ubuntu 22.04.2 LTS用MinGW-w64交叉编译Windows C代码遇OpenSSL头文件错误

问题分析与解决

你的核心问题是混用了Linux平台的OpenSSL库来交叉编译Windows程序。你安装的libssl-dev是给Ubuntu本地编译用的,交叉编译Windows目标时,需要使用MinGW-w64工具链对应的Windows版本OpenSSL库,而非系统的Linux版本。

具体解决步骤

  1. 安装MinGW-w64版本的OpenSSL包
    在Ubuntu终端执行以下命令(针对64位Windows目标):

    sudo apt update && sudo apt install mingw-w64-x86-64-openssl
    

    如果是32位Windows目标,替换为mingw-w64-i686-openssl。

  2. 修正编译命令
    移除错误的-I/usr/include/openssl和-L/usr/lib参数,MinGW工具链会自动识别交叉编译库的路径。正确命令如下:

    x86_64-w64-mingw32-gcc -o crypto.exe crypto.c -lssl -lcrypto -lws2_32
    

为什么之前的方法无效?

  • 你指定的-I/usr/include/openssl会让编译器在/usr/include/openssl目录下寻找openssl/rsa.h,实际路径变成/usr/include/openssl/openssl/rsa.h,自然找不到目标文件。即使改成-I/usr/include,Linux版的OpenSSL头文件包含大量Linux平台特有的定义,编译Windows程序会引发更多兼容性错误。
  • /usr/lib下的是Linux平台的.so格式库,无法被Windows程序调用,必须链接MinGW编译的Windows版.dll/.a库。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 07:42:43