X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=INSTALL.W32;h=4550aa06215c63e9e4b9d699855e694484c875c0;hp=54176f0472d80832e5b7b951e6e5af6c7ccf48b8;hb=690233bccc8214cb67be9347078e08a29ee10a62;hpb=651d0aff98d28e2db146afa1790e9e22f3ef22db diff --git a/INSTALL.W32 b/INSTALL.W32 index 54176f0472..4550aa0621 100644 --- a/INSTALL.W32 +++ b/INSTALL.W32 @@ -1,3 +1,180 @@ + + INSTALLATION ON THE WIN32 PLATFORM + ---------------------------------- + + Heres a few comments about building OpenSSL in Windows environments. Most of + this is tested on Win32 but it may also work in Win 3.1 with some + modification. See the end of this file for Eric's original comments. + + You need Perl for Win32 (available from http://www.activestate.com/ActivePerl) + and one of the following C compilers: + + * Visual C++ + * Borland C + * GNU C (Mingw32 or Cygwin32) + + If you want to compile in the assembly language routines with Visual C++ then + you will need an assembler. This is worth doing because it will result in + faster code: for example it will typically result in a 2 times speedup in the + RSA routines. Currently the following assemblers are supported: + + * Microsoft MASM (aka "ml") + * Free Netwide Assembler NASM. + + MASM was I believe distributed in the past with VC++ and it is also part of + the MSDN SDKs. It is no longer distributed as part of VC++ and can be hard + to get hold of. It can be purchased: see Microsoft's site for details at: + http://www.microsoft.com/ + + NASM is freely available. Version 0.98 was used during testing: other versions + may also work. It is available from many places, see for example: + http://www.kernel.org/pub/software/devel/nasm/binaries/win32/ + The NASM binary nasmw.exe needs to be installed anywhere on your PATH. + + If you are compiling from a tarball or a CVS snapshot then the Win32 files + may well be not up to date. This may mean that some "tweaking" is required to + get it all to work. See the trouble shooting section later on for if (when?) + it goes wrong. + + Visual C++ + ---------- + + Firstly you should run Configure: + + > perl Configure VC-WIN32 + + Next you need to build the Makefiles and optionally the assembly language + files: + + - If you are using MASM then run: + + > ms\do_masm + + - If you are using NASM then run: + + > ms\do_nasm + + - If you don't want to use the assembly language files at all then run: + + > ms\do_ms + + If you get errors about things not having numbers assigned then check the + troubleshooting section: you probably wont be able to compile it as it + stands. + + Then from the VC++ environment at a prompt do: + + > nmake -f ms\ntdll.mak + + If all is well it should compile and you will have some DLLs and executables + in out32dll. If you want to try the tests then do: + + > cd out32dll + > ..\ms\test + + Tweaks: + + There are various changes you can make to the Win32 compile environment. By + default the library is not compiled with debugging symbols. If you add 'debug' + to the mk1mk.pl lines in the do_* batch file then debugging symbols will be + compiled in. + + The default Win32 environment is to leave out any Windows NT specific + features. + + If you want to enable the NT specific features of OpenSSL (currently only the + logging BIO) follow the instructions above but call the batch file do_nt.bat + instead of do_ms.bat. + + You can also build a static version of the library using the Makefile + ms\nt.mak + + Borland C++ builder 3 and 4 + --------------------------- + + * Setup PATH. First must be GNU make then bcb4/bin + + * Run ms\bcb4.bat + + * Run make: + > make -f bcb.mak + + GNU C (Mingw32) + --------------- + + To build OpenSSL, you need the Mingw32 package and GNU make. + + * Compiler installation: + + Mingw32 is available from . GNU make is at + . Install both of them in C:\egcs-1.1.2 and run + C:\egcs-1.1.2\mingw32.bat to set the PATH. + + * Compile OpenSSL: + + > perl Configure Mingw32 + > ms\mw.bat + + This will create the library and binaries in out. + + libcrypto.a and libssl.a are the static libraries. To use the DLLs, + link with libeay32.a and libssl32.a instead. + + See troubleshooting if you get error messages about functions not having + a number assigned. + + * You can now try the tests: + + > cd out + > ..\ms\test + + Troubleshooting + --------------- + + Since the Win32 build is only occasionally tested it may not always compile + cleanly. If you get an error about functions not having numbers assigned + when you run ms\do_ms then this means the Win32 ordinal files are not up to + date. You can do: + + > perl util\mkdef.pl crypto ssl update + + then ms\do_XXX should not give a warning any more. However the numbers that + get assigned by this technique may not match those that eventually get + assigned in the CVS tree: so anything linked against this version of the + library may need to be recompiled. + + If you get errors about unresolved externals then this means that either you + didn't read the note above about functions not having numbers assigned or + someone forgot to add a function to the header file. + + In this latter case check out the header file to see if the function is + defined in the header file. + + If you get warnings in the code then the compilation will halt. + + The default Makefile for Win32 halts whenever any warnings occur. Since VC++ + has its own ideas about warnings which don't always match up to other + environments this can happen. The best fix is to edit the file with the + warning in and fix it. Alternatively you can turn off the halt on warnings by + editing the CFLAG line in the Makefile and deleting the /WX option. + + You might get compilation errors. Again you will have to fix these or report + them. + + One final comment about compiling applications linked to the OpenSSL library. + If you don't use the multithreaded DLL runtime library (/MD option) your + program will almost certainly crash: see the original SSLeay description + below for more details. + +-------------------------------------------------------------------------------- +The orignal Windows build instructions from SSLeay follow. +Note: some of this may be out of date and no longer applicable. In particular +the Crypto_malloc_init() comment appears to be wrong: you always need to use +the same runtime library as the DLL itself. +-------------------------------------------------------------------------------- + The Microsoft World. The good news, to build SSLeay for the Microsft World