Thank you Michael Wojcik On 19-Aug-15 7:25 PM, Michael Wojcik wrote: > This is not an OpenSSL issue; it's an autoconf one. > > From your installation log: > > ----- > "gcc -o conftest.exe -IC:/Ruby21/include/ruby-2.1.0/i386-mingw32 -IC:/Ruby21/include/ruby-2.1.0/ruby/backward -IC:/Ruby21/include/ruby-2.1.0 -I. -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D__MINGW_USE_VC2005_COMPAT -D_FILE_OFFSET_BITS=64 -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c -L. -LC:/Ruby21/lib -L. -lmsvcrt-ruby210 -lcrypto -lshell32 -lws2_32 -liphlpapi -limagehlp -lshlwapi" > conftest.c: In function 't': > conftest.c:16:57: error: 'BIO_read' undeclared (first use in this function) > conftest.c:16:57: note: each undeclared identifier is reported only once for each function it appears in > conftest.c:16:32: warning: variable 'p' set but not used [-Wunused-but-set-variable] > checked program was: > /* begin */ > 1: #include "ruby.h" > 2: > 3: #include <winsock2.h> > 4: #include <windows.h> > 5: > 6: /*top*/ > 7: extern int t(void); > 8: int main(int argc, char **argv) > 9: { > 10: if (argc > 1000000) { > 11: printf("%p", &t); > 12: } > 13: > 14: return 0; > 15: } > 16: int t(void) { void ((*volatile p)()); p = (void ((*)()))BIO_read; return 0; } > /* end */ > ----- > > Note: > - The conftest.c generated by autoconf does not include any OpenSSL headers > - gcc correctly complains that BIO_read has not been declared > > It's not a linker failure - it's a compiler diagnostic. autoconf isn't successfully checking whether the symbol can be resolved by the library because the test program it's generating is rubbish. > > Autoconf should be generating an extern declaration for BIO_read in conftest.c; apparently whoever wrote that bit of autoconf doesn't know C. (No surprise there.) I suspect it normally works because gcc is configured with different default settings and treats the lack of a declaration as non-fatal. I don't know why it's different in your case, and I have no idea how to fix it, as I've never had to poke into the implementation of autoconf and don't know what's making your gcc behave differently. >