]> git.ipfire.org Git - thirdparty/openssl.git/blob - INSTALL
Move the Configure generated header files to the top build.info
[thirdparty/openssl.git] / INSTALL
1
2 OPENSSL INSTALLATION
3 --------------------
4
5 [This document describes installation on all supported operating
6 systems (currently mainly the Linux/Unix family, OpenVMS and
7 Windows)]
8
9 To install OpenSSL, you will need:
10
11 * A make implementation
12 * Perl 5 with core modules (please read NOTES.PERL)
13 * The perl module Text::Template (please read NOTES.PERL)
14 * an ANSI C compiler
15 * a development environment in the form of development libraries and C
16 header files
17 * a supported operating system
18
19 For additional platform specific requirements and other details,
20 please read one of these:
21
22 * NOTES.VMS (OpenVMS)
23 * NOTES.WIN (any supported Windows)
24 * NOTES.DJGPP (DOS platform with DJGPP)
25
26 Quick Start
27 -----------
28
29 If you want to just get on with it, do:
30
31 on Unix:
32
33 $ ./config
34 $ make
35 $ make test
36 $ make install
37
38 on OpenVMS:
39
40 $ @config
41 $ mms
42 $ mms test
43 $ mms install
44
45 on Windows (only pick one of the targets for configuration):
46
47 $ perl Configure { VC-WIN32 | VC-WIN64A | VC-WIN64I | VC-CE }
48 $ nmake
49 $ nmake test
50 $ nmake install
51
52 [If any of these steps fails, see section Installation in Detail below.]
53
54 This will build and install OpenSSL in the default location, which is:
55
56 Unix: normal installation directories under /usr/local
57 OpenVMS: SYS$COMMON:[OPENSSL-'version'...], where 'version' is the
58 OpenSSL version number with underscores instead of periods.
59 Windows: C:\Program Files\OpenSSL or C:\Program Files (x86)\OpenSSL
60
61 If you want to install it anywhere else, run config like this:
62
63 On Unix:
64
65 $ ./config --prefix=/opt/openssl --openssldir=/usr/local/ssl
66
67 On OpenVMS:
68
69 $ @config --prefix=PROGRAM:[INSTALLS] --openssldir=SYS$MANAGER:[OPENSSL]
70
71
72 Configuration Options
73 ---------------------
74
75 There are several options to ./config (or ./Configure) to customize
76 the build (note that for Windows, the defaults for --prefix and
77 --openssldir depend in what configuration is used and what Windows
78 implementation OpenSSL is built on. More notes on this in NOTES.WIN):
79
80 --api=x.y.z
81 Don't build with support for deprecated APIs below the
82 specified version number. For example "--api=1.1.0" will
83 remove support for all APIS that were deprecated in OpenSSL
84 version 1.1.0 or below.
85
86 --cross-compile-prefix=PREFIX
87 The PREFIX to include in front of commands for your
88 toolchain. For example to build the mingw64 target on Linux
89 you might use "--cross-compile-prefix=x86_64-w64-mingw32-".
90 If the compiler is gcc, then this will attempt to run
91 x86_64-w64-mingw32-gcc when compiling.
92
93 --debug
94 Build OpenSSL with debugging symbols.
95
96 --libdir=DIR
97 The name of the directory under the top of the installation
98 directory tree (see the --prefix option) where libraries will
99 be installed. By default this is "lib". Note that on Windows
100 only ".lib" files will be stored in this location. dll files
101 will always be installed to the "bin" directory.
102
103 --openssldir=DIR
104 Directory for OpenSSL configuration files, and also the
105 default certificate and key store. Defaults are:
106
107 Unix: /usr/local/ssl
108 Windows: C:\Program Files\Common Files\SSL
109 or C:\Program Files (x86)\Common Files\SSL
110 OpenVMS: SYS$COMMON:[OPENSSL-COMMON]
111
112 --prefix=DIR
113 The top of the installation directory tree. Defaults are:
114
115 Unix: /usr/local
116 Windows: C:\Program Files\OpenSSL
117 or C:\Program Files (x86)\OpenSSL
118 OpenVMS: SYS$COMMON:[OPENSSL-'version']
119
120 --release
121 Build OpenSSL without debugging symbols. This is the default.
122
123 --strict-warnings
124 This is a developer flag that switches on various compiler
125 options recommended for OpenSSL development. It only works
126 when using gcc or clang as the compiler. If you are
127 developing a patch for OpenSSL then it is recommended that
128 you use this option where possible.
129
130 --with-zlib-include=DIR
131 The directory for the location of the zlib include file. This
132 option is only necessary if enable-zlib (see below) is used
133 and the include file is not already on the system include
134 path.
135
136 --with-zlib-lib=LIB
137 On Unix: this is the directory containing the zlib library.
138 If not provided the system library path will be used.
139 On Windows: this is the filename of the zlib library (with or
140 without a path). This flag must be provided if the
141 zlib-dynamic option is not also used. If zlib-dynamic is used
142 then this flag is optional and a default value ("ZLIB1") is
143 used if not provided.
144 On VMS: this is the filename of the zlib library (with or
145 without a path). This flag is optional and if not provided
146 then "GNV$LIBZSHR", "GNV$LIBZSHR32" or "GNV$LIBZSHR64" is
147 used by default depending on the pointer size chosen.
148
149 no-afalgeng
150 Don't build the AFALG engine. This option will be forced if
151 on a platform that does not support AFALG.
152
153 enable-asan
154 Build with the Address sanitser. This is a developer option
155 only. It may not work on all platforms and should never be
156 used in production environments. It will only work when used
157 with gcc or clang and should be used in conjunction with the
158 no-shared option.
159
160 no-asm
161 Do not use assembler code. On some platforms a small amount
162 of assembler code may still be used.
163
164 no-async
165 Do not build support for async operations.
166
167 no-autoalginit
168 Don't automatically load all supported ciphers and digests.
169 Typically OpenSSL will make available all of its supported
170 ciphers and digests. For a statically linked application this
171 may be undesirable if small executable size is an objective.
172 This only affects libcrypto. Ciphers and digests will have to
173 be loaded manually using EVP_add_cipher() and
174 EVP_add_digest() if this option is used. This option will
175 force a non-shared build.
176
177 no-autoerrinit
178 Don't automatically load all libcrypto/libssl error strings.
179 Typically OpenSSL will automatically load human readable
180 error strings. For a statically linked application this may
181 be undesirable if small executable size is an objective.
182
183
184 no-capieng
185 Don't build the CAPI engine. This option will be forced if
186 on a platform that does not support CAPI.
187
188 no-cms
189 Don't build support for CMS features
190
191 no-comp
192 Don't build support for SSL/TLS compression. If this option
193 is left enabled (the default), then compression will only
194 work if the zlib or zlib-dynamic options are also chosen.
195
196 enable-crypto-mdebug
197 Build support for debugging memory allocated via
198 OPENSSL_malloc() or OPENSSL_zalloc().
199
200 enable-crypto-mdebug-backtrace
201 As for crypto-mdebug, but additionally provide backtrace
202 information for allocated memory.
203 TO BE USED WITH CARE: this uses GNU C functionality, and
204 is therefore not usable for non-GNU config targets. If
205 your build complains about the use of '-rdynamic' or the
206 lack of header file execinfo.h, this option is not for you.
207 ALSO NOTE that even though execinfo.h is available on your
208 system (through Gnulib), the functions might just be stubs
209 that do nothing.
210
211 no-ct
212 Don't build support for Certificate Transparency.
213
214 no-deprecated
215 Don't build with support for any deprecated APIs. This is the
216 same as using "--api" and supplying the latest version
217 number.
218
219 no-dgram
220 Don't build support for datagram based BIOs. Selecting this
221 option will also force the disabling of DTLS.
222
223 no-dso
224 Don't build support for loading Dynamic Shared Objects.
225
226 no-dynamic-engine
227 Don't build the dynamically loaded engines. This only has an
228 effect in a "shared" build
229
230 no-ec
231 Don't build support for Elliptic Curves.
232
233 no-ec2m
234 Don't build support for binary Elliptic Curves
235
236 enable-ec_nistp_64_gcc_128
237 Enable support for optimised implementations of some commonly
238 used NIST elliptic curves. This is only supported on some
239 platforms.
240
241 enable-egd
242 Build support for gathering entropy from EGD (Entropy
243 Gathering Daemon).
244
245 no-engine
246 Don't build support for loading engines.
247
248 no-err
249 Don't compile in any error strings.
250
251 no-filenames
252 Don't compile in filename and line number information (e.g.
253 for errors and memory allocation).
254
255 enable-fuzz
256 Build with support for fuzzing. This is a developer option
257 only. It may not work on all platforms and should never be
258 used in production environments. See the file fuzz/README.md
259 for further details.
260
261 no-gost
262 Don't build support for GOST based ciphersuites. Note that
263 if this feature is enabled then GOST ciphersuites are only
264 available if the GOST algorithms are also available through
265 loading an externally supplied engine.
266
267 enable-heartbeats
268 Build support for DTLS heartbeats.
269
270 no-hw-padlock
271 Don't build the padlock engine.
272
273 no-makedepend
274 Don't generate dependencies.
275
276 no-multiblock
277 Don't build support for writing multiple records in one
278 go in libssl (Note: this is a different capability to the
279 pipelining functionality).
280
281 no-nextprotoneg
282 Don't build support for the NPN TLS extension.
283
284 no-ocsp
285 Don't build support for OCSP.
286
287 no-pic
288 Don't build with support for Position Independent Code.
289
290 no-posix-io
291 Don't use POSIX IO capabilities.
292
293 no-psk
294 Don't build support for Pre-Shared Key based ciphersuites.
295
296 no-rdrand
297 Don't use hardware RDRAND capabilities.
298
299 no-rfc3779
300 Don't build support for RFC3779 ("X.509 Extensions for IP
301 Addresses and AS Identifiers")
302
303 sctp
304 Build support for SCTP
305
306 no-shared
307 Do not create shared libraries, only static ones. See "Note
308 on shared libraries" below.
309
310 no-sock
311 Don't build support for socket BIOs
312
313 no-srp
314 Don't build support for SRP or SRP based ciphersuites.
315
316 no-srtp
317 Don't build SRTP support
318
319 no-sse2
320 Exclude SSE2 code paths. Normally SSE2 extension is
321 detected at run-time, but the decision whether or not the
322 machine code will be executed is taken solely on CPU
323 capability vector. This means that if you happen to run OS
324 kernel which does not support SSE2 extension on Intel P4
325 processor, then your application might be exposed to
326 "illegal instruction" exception. There might be a way
327 to enable support in kernel, e.g. FreeBSD kernel can be
328 compiled with CPU_ENABLE_SSE, and there is a way to
329 disengage SSE2 code pathes upon application start-up,
330 but if you aim for wider "audience" running such kernel,
331 consider no-sse2. Both the 386 and no-asm options imply
332 no-sse2.
333
334 enable-ssl-trace
335 Build with the SSL Trace capabilities (adds the "-trace"
336 option to s_client and s_server).
337
338 no-static-engine
339 Don't build the statically linked engines. This only
340 has an impact when not built "shared".
341
342 no-stdio
343 Don't use any C "stdio" features. Only libcrypto and libssl
344 can be built in this way. Using this option will suppress
345 building the command line applications. Additionally since
346 the OpenSSL tests also use the command line applications the
347 tests will also be skipped.
348
349 no-threads
350 Don't try to build with support for multi-threaded
351 applications.
352
353 threads
354 Build with support for multi-threaded applications. Most
355 platforms will enable this by default. However if on a
356 platform where this is not the case then this will usually
357 require additional system-dependent options! See "Note on
358 multi-threading" below.
359
360 no-ts
361 Don't build Time Stamping Authority support.
362
363 enable-ubsan
364 Build with the Undefined Behaviour sanitser. This is a
365 developer option only. It may not work on all platforms and
366 should never be used in production environments. It will only
367 work when used with gcc or clang and should be used in
368 conjunction with the "-DPEDANTIC" option (or the
369 --strict-warnings option).
370
371 no-ui
372 Don't build with the "UI" capability (i.e. the set of
373 features enabling text based prompts).
374
375 enable-unit-test
376 Enable additional unit test APIs. This should not typically
377 be used in production deployments.
378
379 enable-weak-ssl-ciphers
380 Build support for SSL/TLS ciphers that are considered "weak"
381 (e.g. RC4 based ciphersuites).
382
383 zlib
384 Build with support for zlib compression/decompression.
385
386 zlib-dynamic
387 Like "zlib", but has OpenSSL load the zlib library
388 dynamically when needed. This is only supported on systems
389 where loading of shared libraries is supported.
390
391 386
392 On Intel hardware, use the 80386 instruction set only
393 (the default x86 code is more efficient, but requires at
394 least a 486). Note: Use compiler flags for any other CPU
395 specific configuration, e.g. "-m32" to build x86 code on
396 an x64 system.
397
398 no-<prot>
399 Don't build support for negotiating the specified SSL/TLS
400 protocol (one of ssl, ssl3, tls, tls1, tls1_1, tls1_2, dtls,
401 dtls1 or dtls1_2). If "no-tls" is selected then all of tls1,
402 tls1_1 and tls1_2 are disabled. Similarly "no-dtls" will
403 disable dtls1 and dtls1_2. The "no-ssl" option is synonymous
404 with "no-ssl3". Note this only affects version negotiation.
405 OpenSSL will still provide the methods for applications to
406 explicitly select the individual protocol versions.
407
408 no-<prot>-method
409 As for no-<prot> but in addition do not build the methods for
410 applications to explicitly select individual protocol
411 versions.
412
413 enable-<alg>
414 Build with support for the specified algorithm, where <alg>
415 is one of: md2 or rc5.
416
417 no-<alg>
418 Build without support for the specified algorithm, where
419 <alg> is one of: bf, blake2, camellia, cast, chacha, cmac,
420 des, dh, dsa, ecdh, ecdsa, idea, md4, md5, mdc2, ocb,
421 ploy1305, rc2, rc4, rmd160, scrypt, seed or whirlpool. The
422 "ripemd" algorithm is deprecated and if used is synonymous
423 with rmd160.
424
425 -Dxxx, -lxxx, -Lxxx, -fxxx, -mXXX, -Kxxx
426 These system specific options will be passed through to the
427 compiler to allow you to define preprocessor symbols, specify
428 additional libraries, library directories or other compiler
429 options.
430
431
432 Installation in Detail
433 ----------------------
434
435 1a. Configure OpenSSL for your operation system automatically:
436
437 NOTE: This is not available on Windows.
438
439 $ ./config [options] # Unix
440
441 or
442
443 $ @config [options] ! OpenVMS
444
445 For the remainder of this text, the Unix form will be used in all
446 examples, please use the appropriate form for your platform.
447
448 This guesses at your operating system (and compiler, if necessary) and
449 configures OpenSSL based on this guess. Run ./config -t to see
450 if it guessed correctly. If you want to use a different compiler, you
451 are cross-compiling for another platform, or the ./config guess was
452 wrong for other reasons, go to step 1b. Otherwise go to step 2.
453
454 On some systems, you can include debugging information as follows:
455
456 $ ./config -d [options]
457
458 1b. Configure OpenSSL for your operating system manually
459
460 OpenSSL knows about a range of different operating system, hardware and
461 compiler combinations. To see the ones it knows about, run
462
463 $ ./Configure # Unix
464
465 or
466
467 $ perl Configure # All other platforms
468
469 For the remainder of this text, the Unix form will be used in all
470 examples, please use the appropriate form for your platform.
471
472 Pick a suitable name from the list that matches your system. For most
473 operating systems there is a choice between using "cc" or "gcc". When
474 you have identified your system (and if necessary compiler) use this name
475 as the argument to Configure. For example, a "linux-elf" user would
476 run:
477
478 $ ./Configure linux-elf [options]
479
480 If your system isn't listed, you will have to create a configuration
481 file named Configurations/{something}.conf and add the correct
482 configuration for your system. See the available configs as examples
483 and read Configurations/README and Configurations/README.design for
484 more information.
485
486 The generic configurations "cc" or "gcc" should usually work on 32 bit
487 Unix-like systems.
488
489 Configure creates a build file ("Makefile" on Unix, "makefile" on Windows
490 and "descrip.mms" on OpenVMS) from a suitable template in Configurations,
491 and defines various macros in include/openssl/opensslconf.h (generated from
492 include/openssl/opensslconf.h.in).
493
494 1c. Configure OpenSSL for building outside of the source tree.
495
496 OpenSSL can be configured to build in a build directory separate from
497 the directory with the source code. It's done by placing yourself in
498 some other directory and invoking the configuration commands from
499 there.
500
501 Unix example:
502
503 $ mkdir /var/tmp/openssl-build
504 $ cd /var/tmp/openssl-build
505 $ /PATH/TO/OPENSSL/SOURCE/config [options]
506
507 or
508
509 $ /PATH/TO/OPENSSL/SOURCE/Configure [target] [options]
510
511 OpenVMS example:
512
513 $ set default sys$login:
514 $ create/dir [.tmp.openssl-build]
515 $ set default [.tmp.openssl-build]
516 $ @[PATH.TO.OPENSSL.SOURCE]config {options}
517
518 or
519
520 $ @[PATH.TO.OPENSSL.SOURCE]Configure {target} {options}
521
522 Windows example:
523
524 $ C:
525 $ mkdir \temp-openssl
526 $ cd \temp-openssl
527 $ perl d:\PATH\TO\OPENSSL\SOURCE\Configure {target} {options}
528
529 Paths can be relative just as well as absolute. Configure will
530 do its best to translate them to relative paths whenever possible.
531
532 2. Build OpenSSL by running:
533
534 $ make # Unix
535 $ mms ! (or mmk) OpenVMS
536 $ nmake # Windows
537
538 This will build the OpenSSL libraries (libcrypto.a and libssl.a on
539 Unix, corresponding on other platforms) and the OpenSSL binary
540 ("openssl"). The libraries will be built in the top-level directory,
541 and the binary will be in the "apps" subdirectory.
542
543 If the build fails, look at the output. There may be reasons for
544 the failure that aren't problems in OpenSSL itself (like missing
545 standard headers). If you are having problems you can get help by
546 sending an email to the openssl-users email list (see
547 https://www.openssl.org/community/mailinglists.html for details). If it
548 is a bug with OpenSSL itself, please report the problem to
549 <rt@openssl.org> (note that your message will be recorded in the request
550 tracker publicly readable at
551 https://www.openssl.org/community/index.html#bugs and will be
552 forwarded to a public mailing list). Please check out the request
553 tracker. Maybe the bug was already reported or has already been
554 fixed.
555
556 [If you encounter assembler error messages, try the "no-asm"
557 configuration option as an immediate fix.]
558
559 Compiling parts of OpenSSL with gcc and others with the system
560 compiler will result in unresolved symbols on some systems.
561
562 3. After a successful build, the libraries should be tested. Run:
563
564 $ make test # Unix
565 $ mms test ! OpenVMS
566 $ nmake test # Windows
567
568 NOTE: you MUST run the tests from an unprivileged account (or
569 disable your privileges temporarly if your platform allows it).
570
571 If some tests fail, look at the output. There may be reasons for
572 the failure that isn't a problem in OpenSSL itself (like a
573 malfunction with Perl). You may want increased verbosity, that
574 can be accomplished like this:
575
576 $ make VERBOSE=1 test # Unix
577
578 $ mms /macro=(VERBOSE=1) test ! OpenVMS
579
580 $ nmake VERBOSE=1 test # Windows
581
582 If you want to run just one or a few specific tests, you can use
583 the make variable TESTS to specify them, like this:
584
585 $ make TESTS='test_rsa test_dsa' test # Unix
586 $ mms/macro="TESTS=test_rsa test_dsa" test ! OpenVMS
587 $ nmake TESTS='test_rsa test_dsa' test # Windows
588
589 And of course, you can combine (Unix example shown):
590
591 $ make VERBOSE=1 TESTS='test_rsa test_dsa' test
592
593 You can find the list of available tests like this:
594
595 $ make list-tests # Unix
596 $ mms list-tests ! OpenVMS
597 $ nmake list-tests # Windows
598
599 Have a look at the manual for the perl module Test::Harness to
600 see what other HARNESS_* variables there are.
601
602 If you find a problem with OpenSSL itself, try removing any
603 compiler optimization flags from the CFLAGS line in Makefile and
604 run "make clean; make" or corresponding.
605
606 Please send bug reports to <rt@openssl.org>.
607
608 4. If everything tests ok, install OpenSSL with
609
610 $ make install # Unix
611 $ mms install ! OpenVMS
612 $ nmake install # Windows
613
614 This will install all the software components in this directory
615 tree under PREFIX (the directory given with --prefix or its
616 default):
617
618 Unix:
619
620 bin/ Contains the openssl binary and a few other
621 utility scripts.
622 include/openssl
623 Contains the header files needed if you want
624 to build your own programs that use libcrypto
625 or libssl.
626 lib Contains the OpenSSL library files.
627 lib/engines Contains the OpenSSL dynamically loadable engines.
628 share/man/{man1,man3,man5,man7}
629 Contains the OpenSSL man-pages.
630 share/doc/openssl/html/{man1,man3,man5,man7}
631 Contains the HTML rendition of the man-pages.
632
633 OpenVMS ('arch' is replaced with the architecture name, "Alpha"
634 or "ia64"):
635
636 [.EXE.'arch'] Contains the openssl binary and a few other
637 utility scripts.
638 [.include.openssl]
639 Contains the header files needed if you want
640 to build your own programs that use libcrypto
641 or libssl.
642 [.LIB.'arch'] Contains the OpenSSL library files.
643 [.ENGINES.'arch']
644 Contains the OpenSSL dynamically loadable engines.
645 [.SYS$STARTUP] Contains startup, login and shutdown scripts.
646 These define appropriate logical names and
647 command symbols.
648
649
650 Additionally, install will add the following directories under
651 OPENSSLDIR (the directory given with --openssldir or its default)
652 for you convenience:
653
654 certs Initially empty, this is the default location
655 for certificate files.
656 private Initially empty, this is the default location
657 for private key files.
658 misc Various scripts.
659
660 Package builders who want to configure the library for standard
661 locations, but have the package installed somewhere else so that
662 it can easily be packaged, can use
663
664 $ make DESTDIR=/tmp/package-root install # Unix
665 $ mms/macro="DESTDIR=TMP:[PACKAGE-ROOT]" install ! OpenVMS
666
667 The specified destination directory will be prepended to all
668 installation target paths.
669
670 Compatibility issues with previous OpenSSL versions:
671
672 * COMPILING existing applications
673
674 OpenSSL 1.1.0 hides a number of structures that were previously
675 open. This includes all internal libssl structures and a number
676 of EVP types. Accessor functions have been added to allow
677 controlled access to the structures' data.
678
679 This means that some software needs to be rewritten to adapt to
680 the new ways of doing things. This often amounts to allocating
681 an instance of a structure explicitly where you could previously
682 allocate them on the stack as automatic variables, and using the
683 provided accessor functions where you would previously access a
684 structure's field directly.
685
686 Some APIs have changed as well. However, older APIs have been
687 preserved when possible.
688
689 Environment Variables
690 ---------------------
691
692 A number of environment variables can be used to provide additional control
693 over the build process. Typically these should be defined prior to running
694 config or Configure. Not all environment variables are relevant to all
695 platforms.
696
697 AR
698 The name of the ar executable to use.
699
700 CC
701 The compiler to use. Configure will attempt to pick a default
702 compiler for your platform but this choice can be overridden
703 using this variable. Set it to the compiler executable you wish
704 to use, e.g. "gcc" or "clang".
705
706 CROSS_COMPILE
707 This environment variable has the same meaning as for the
708 "--cross-compile-prefix" Configure flag described above. If both
709 are set then the Configure flag takes precedence.
710
711 NM
712 The name of the nm executable to use.
713
714 OPENSSL_LOCAL_CONFIG_DIR
715 OpenSSL comes with a database of information about how it
716 should be built on different platforms. This information is
717 held in ".conf" files in the Configurations directory. See the
718 file Configurations/README for further information about the
719 format of ".conf" files. As well as the standard ".conf" files
720 it is possible to create your own ".conf" files and store them
721 locally, outside the OpenSSL source tree. This environment
722 variable can be set to the directory where these files are held.
723
724 PERL
725 The name of the Perl executable to use.
726
727 RC
728 The name of the rc executable to use. The default will be as
729 defined for the target platform in the ".conf" file. If not
730 defined then "windres" will be used. The WINDRES environment
731 variable is synonymous to this. If both are defined then RC
732 takes precedence.
733
734 RANLIB
735 The name of the ranlib executable to use.
736
737 WINDRES
738 See RC.
739
740 Makefile targets
741 ----------------
742
743 The Configure script generates a Makefile in a format relevant to the specific
744 platform. The Makefiles provide a number of targets that can be used. Not all
745 targets may be available on all platforms. Only the most common targets are
746 described here. Examine the Makefiles themselves for the full list.
747
748 all
749 The default target to build all the software components.
750
751 clean
752 Remove all build artefacts and return the directory to a "clean"
753 state.
754
755 depend
756 Rebuild the dependencies in the Makefiles. This is a legacy
757 option that no longer needs to be used in OpenSSL 1.1.0.
758
759 install
760 Install all OpenSSL components.
761
762 install_sw
763 Only install the OpenSSL software components.
764
765 install_docs
766 Only install the OpenSSL documentation components.
767
768 install_man_docs
769 Only install the OpenSSL man pages (Unix only).
770
771 install_html_docs
772 Only install the OpenSSL html documentation.
773
774 list-tests
775 Prints a list of all the self test names.
776
777 test
778 Build and run the OpenSSL self tests.
779
780 uninstall
781 Uninstall all OpenSSL components.
782
783 update
784 This is a developer option. If you are developing a patch for
785 OpenSSL you may need to use this if you want to update
786 automatically generated files; add new error codes or add new
787 (or change the visibility of) public API functions. (Unix only).
788
789 Note on multi-threading
790 -----------------------
791
792 For some systems, the OpenSSL Configure script knows what compiler options
793 are needed to generate a library that is suitable for multi-threaded
794 applications. On these systems, support for multi-threading is enabled
795 by default; use the "no-threads" option to disable (this should never be
796 necessary).
797
798 On other systems, to enable support for multi-threading, you will have
799 to specify at least two options: "threads", and a system-dependent option.
800 (The latter is "-D_REENTRANT" on various systems.) The default in this
801 case, obviously, is not to include support for multi-threading (but
802 you can still use "no-threads" to suppress an annoying warning message
803 from the Configure script.)
804
805 OpenSSL provides built-in support for two threading models: pthreads (found on
806 most UNIX/Linux systems), and Windows threads. No other threading models are
807 supported. If your platform does not provide pthreads or Windows threads then
808 you should Configure with the "no-threads" option.
809
810 Note on shared libraries
811 ------------------------
812
813 For most systems the OpenSSL Configure script knows what is needed to
814 build shared libraries for libcrypto and libssl. On these systems
815 the shared libraries will be created by default. This can be suppressed and
816 only static libraries created by using the "no-shared" option. On systems
817 where OpenSSL does not know how to build shared libraries the "no-shared"
818 option will be forced and only static libraries will be created.
819
820 Note on random number generation
821 --------------------------------
822
823 Availability of cryptographically secure random numbers is required for
824 secret key generation. OpenSSL provides several options to seed the
825 internal PRNG. If not properly seeded, the internal PRNG will refuse
826 to deliver random bytes and a "PRNG not seeded error" will occur.
827 On systems without /dev/urandom (or similar) device, it may be necessary
828 to install additional support software to obtain a random seed.
829 Please check out the manual pages for RAND_add(), RAND_bytes(), RAND_egd(),
830 and the FAQ for more information.
831