From: Jonathan P. <jp...@to...> - 2012-05-30 15:54:34
|
Hi all, I'm trying to use OpenSSL under an MinGW environment under Windows 7 64-bit. I was able to build and use glib based applications without problems using packages provided at: http://www.gtk.org/download/win32.php When I try to use OpenSSL, it always crash (Segmentation fault) in SSL_library_init. I'm using the "msys-openssl" packages installed using mingw-get.exe. Here is a simple example to illustrate the problem. If I compile this: --- #include <openssl/ssl.h> int main(int argc, char **argv) { SSL_library_init(); return 0; } --- by using this command: --- gcc -IC:/MinGW/msys/1.0/include -g -Wall ssl_demo.c -o ssl_demo.exe -Wl,--enable-auto-import -LC:/MinGW/msys/1.0/lib -lssl -lcrypto --- The resulting binary will crash deep within SSL_library_init. The flags and library linking used above were determined using: --- PKG_CONFIG_PATH="/lib/pkgconfig" pkg-config --cflags --libs openssl --- My OpenSSL installation appears to be running correctly if I use the command line driven "openssl.exe". I suspect a linking issue given this output: --- $ ldd-light /bin/openssl.exe /bin/openssl.exe: DLL Name: msys-crypto-1.0.0.dll DLL Name: msys-ssl-1.0.0.dll DLL Name: msys-1.0.dll DLL Name: KERNEL32.dll DLL Name: msys-crypto-1.0.0.dll DLL Name: msys-crypto-1.0.0.dll $ ldd-light ssl_demo.exe ssl_demo.exe: DLL Name: KERNEL32.dll DLL Name: msvcrt.dll DLL Name: msys-ssl-1.0.0.dll --- I tried countless linking variations and the problem still remain. I managed to remove the dependency on "msvcrt.dll", which I believe to be the source of the problem using "-nostdlib" but it was simply crashing elsewhere in "__main". Anybody knows how to properly link OpenSSL application in MinGW or I've hit a real problem? Thanks, - Jonathan Phénix CONFIDENTIALITY CAUTION This e-mail and any attachments may be confidential or legally privileged. If you received this message in error or are not the intended recipient, you should destroy the e-mail message and any attachments or copies, and you are prohibited from retaining, distributing, disclosing or using any information contained herein. Please inform us of the erroneous delivery by return e-mail. Thank you for your cooperation. DOCUMENT CONFIDENTIEL Le présent courriel et tout fichier joint à celui-ci peuvent contenir des renseignements confidentiels ou privilégiés. Si cet envoi ne s'adresse pas à vous ou si vous l'avez reçu par erreur, vous devez l'effacer. Vous ne pouvez conserver, distribuer, communiquer ou utiliser les renseignements qu'il contient. Nous vous prions de nous signaler l'erreur par courriel. Merci de votre collaboration. |