无法交叉编译(windows)链接ssl库的程序

时间:2012-03-12 15:49:36

标签: c windows gcc ssl openssl

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

#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:没有这样的文件或目录

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

2 个答案:

答案 0 :(得分:2)

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

OpenSSL是第三方库,因此它不属于mingw包。

答案 1 :(得分:0)

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

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