使用OpenSSL for Windows进行交叉编译

使用OpenSSL for Windows进行交叉编译,windows,openssl,mingw,cross-compiling,Windows,Openssl,Mingw,Cross Compiling,我正在尝试编译oauth utils 适用于Ubuntu中的Windows。我以前在Windows上编译过 几个月前,但想尝试交叉编译 我使用mingw32构建了openssl,好的 libssl.a和libcrypto.a位于正确的位置。链接器现在已启动 找到图书馆耶!但我得到了以下错误: /usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_

我正在尝试编译oauth utils 适用于Ubuntu中的Windows。我以前在Windows上编译过 几个月前,但想尝试交叉编译

我使用mingw32构建了openssl,好的 libssl.a和libcrypto.a位于正确的位置。链接器现在已启动 找到图书馆耶!但我得到了以下错误:

/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xaac): undefined reference to `_CreateDCA@16'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xab9): undefined reference to `_CreateCompatibleDC@4'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xacc): undefined reference to `_GetDeviceCaps@8'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xadc): undefined reference to `_GetDeviceCaps@8'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xaf4): undefined reference to `_CreateCompatibleBitmap@12'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xb04): undefined reference to `_SelectObject@8'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xb18): undefined reference to `_GetObjectA@12'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xb81): undefined reference to `_BitBlt@36'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xb8c): undefined reference to `_GetBitmapBits@12'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xbe5): undefined reference to `_SelectObject@8'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xbec): undefined reference to `_DeleteObject@4'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xbf6): undefined reference to `_DeleteDC@4'
/usr/lib/gcc/i586-mingw32msvc/4.2.1-sjlj/../../../../i586-mingw32msvc/lib/libcrypto.a(rand_win.o):rand_win.c:(.text+0xc00): undefined reference to `_DeleteDC@4'
你知道这是什么原因吗


谢谢。

看来,如果一个人把他们之间的一切都拿走了

static void readscreen(void)
{
#if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN)


在rand_win.c,那栋楼很好用。我不能100%确定删除它有多安全。

似乎如果一个人删除了这两者之间的所有内容

static void readscreen(void)
{
#if !defined(OPENSSL_SYS_WINCE) && !defined(OPENSSL_SYS_WIN32_CYGWIN)


在rand_win.c,那栋楼很好用。我不能100%确定删除它有多安全。

是否将-mwindows添加到link命令中?

是否将-mwindows添加到link命令中?

使用Gdi32.lib链接

使用Gdi32.lib链接

您试图编译哪个版本的OpenSSL? 总的来说,我发现MinGW-w64的1.0版和更新版本工作得很好。
例如,请参阅教程。

您试图编译哪个版本的OpenSSL? 总的来说,我发现MinGW-w64的1.0版和更新版本工作得很好。
例如,请参阅教程。

这是我在mingw中与openssl的固定链接!无需更改rand_win.c中的任何内容,这是当前公认的答案。谢谢!还修复了在CoCotronth中使用libcrypto和CommonCrypto框架时出现的类似链接错误。修复了在mingw中为我连接到openssl的错误!无需更改rand_win.c中的任何内容,这是当前公认的答案。谢谢!在cocotron中使用libcrypto和CommonCrypto框架也修复了类似的链接错误