【问题标题】:Can't cross compile(windows) a program that link ssl library无法交叉编译(Windows)链接 ssl 库的程序
【发布时间】:2012-03-12 15:49:36
【问题描述】:

我有一个链接 ssl 库的 C 程序(md5.h):

#if defined(__APPLE__)
#  define COMMON_DIGEST_FOR_OPENSSL
#  include <CommonCrypto/CommonDigest.h>
#  define SHA1 CC_SHA1
#else
#  include <openssl/md5.h>
#endif

在 Linux 和 Mac Os X 上一切正常,用这个命令行编译:

gcc program.c -o prog -lssl

现在我想为 Windows 编译它,所以我在我的 Debian 上安装了 MinGw,我正在尝试用这个命令行交叉编译:

i586-mingw32msvc-gcc program.c -o program.exe -lssl

但我得到这个编译错误:

错误:openssl/md5.h:没有这样的文件或目录

为什么?我怎么解决这个问题 ?

【问题讨论】:

    标签: c windows gcc ssl openssl


    【解决方案1】:

    您需要为 Windows 构建的 OpenSSL,编译器可以在其中找到它。 最简单的方法是从源代码构建,然后安装到 mingw 编译器可以找到的前缀中(或将包含和库路径传递给构建系统)。

    OpenSSL 是第三方库,因此它不是 mingw 包的一部分。

    【讨论】:

    • 我已将库放在 /usr/i586-mingw32msvc/lib/ 中,但它还是给了我上述错误...
    • @aleroot 放置库(我希望使用 mingw 编译的库,而不是 Linux 库)是好的,但您需要在 /usr/i586-mingw32msvc/include 中有 openSSL 标头,以便编译器找到它。仅在链接时需要该库,编译代码需要标头。
    • 你说的没错,是缺少openssl头文件造成的。
    【解决方案2】:

    检查makefile.m32文件中的所有路径,肯定有问题。

    而且 AFAIR 你必须不是在 cmd 中编译它,而是在 mingw-cmd 中编译,它与 mingw 包一起安装。

    【讨论】:

    • 他在 Linux 上编译,没有提到或提供cmd
    • 哦,我没注意到,抱歉 :( 无论如何他必须检查 makefile.m32 中的路径,错误表明它们很可能有问题
    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多