提交 2acd8ec7 编写于 作者: R Richard Levitte

Change the INSTALL documentation for unified builds

Because of the unified scheme, building on different platforms is very
similar.  We currently have Unix and OpenVMS on the unified scheme,
which means that a separate INSTALL.VMS is no longer needed.
Reviewed-by: NMatt Caswell <matt@openssl.org>
上级 021fff84
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
INSTALLATION ON THE UNIX PLATFORM INSTALLATION ON THE UNIX PLATFORM
--------------------------------- ---------------------------------
[Installation on DOS (with djgpp), Windows, OpenVMS, MacOS (before MacOS X) [Installation on DOS (with djgpp), Windows, MacOS (before MacOS X)
and NetWare is described in INSTALL.DJGPP, INSTALL.WIN, INSTALL.VMS, and NetWare is described in INSTALL.DJGPP, INSTALL.WIN, INSTALL.MacOS
INSTALL.MacOS and INSTALL.NW. and INSTALL.NW.
This document describes installation on operating systems in the Unix This document describes installation on the main supported operating
family.] systems, currently the Unix family and OpenVMS.]
To install OpenSSL, you will need: To install OpenSSL, you will need:
...@@ -17,25 +17,49 @@ ...@@ -17,25 +17,49 @@
* an ANSI C compiler * an ANSI C compiler
* a development environment in form of development libraries and C * a development environment in form of development libraries and C
header files header files
* a supported Unix operating system * a supported operating system
For more details regarding specific platforms, there are these notes
available:
* NOTES.VMS
Quick Start Quick Start
----------- -----------
If you want to just get on with it, do: If you want to just get on with it, do:
$ ./config on Unix:
$ make
$ make test $ ./config
$ make install $ make
$ make test
$ make install
on OpenVMS:
$ @config
$ mms
$ mms test
$ mms install
[If any of these steps fails, see section Installation in Detail below.] [If any of these steps fails, see section Installation in Detail below.]
This will build and install OpenSSL in the default location, which is (for This will build and install OpenSSL in the default location, which is:
historical reasons) /usr/local/ssl. If you want to install it anywhere else,
run config like this: Unix: normal installation directories under /usr/local
OpenVMS: SYS$COMMON:[OPENSSL-'version'...], where 'version' is the
OpenSSL version number ('major'_'minor').
If you want to install it anywhere else, run config like this:
$ ./config --prefix=/usr/local --openssldir=/usr/local/openssl On Unix:
$ ./config --prefix=/opt/openssl --openssldir=/usr/local/ssl
On OpenVMS:
$ @config --prefix=PROGRAM:[INSTALLS] --openssldir=SYS$MANAGER:[OPENSSL]
Configuration Options Configuration Options
...@@ -44,12 +68,16 @@ ...@@ -44,12 +68,16 @@
There are several options to ./config (or ./Configure) to customize There are several options to ./config (or ./Configure) to customize
the build: the build:
--prefix=DIR Install in DIR/bin, DIR/lib, DIR/include/openssl. --prefix=DIR The top of the installation directory tree. Defaults are:
Configuration files used by OpenSSL will be in DIR/ssl
or the directory specified by --openssldir.
--openssldir=DIR Directory for OpenSSL files. If no prefix is specified, Unix: /usr/local
the library files and binaries are also installed there. OpenVMS: SYS$COMMON:[OPENSSL-'version']
--openssldir=DIR Directory for OpenSSL configuration files, and also the
default certificate and key store. Defaults are:
Unix: PREFIX/ssl (PREFIX is given by --prefix)
OpenVMS: SYS$COMMON:[SSL]
no-autoalginit Don't automatically load all supported ciphers and digests. no-autoalginit Don't automatically load all supported ciphers and digests.
Typically OpenSSL will make available all of its supported Typically OpenSSL will make available all of its supported
...@@ -88,10 +116,11 @@ ...@@ -88,10 +116,11 @@
no-asm Do not use assembler code. no-asm Do not use assembler code.
386 Use the 80386 instruction set only (the default x86 code is 386 On Intel hardware, use the 80386 instruction set only
more efficient, but requires at least a 486). Note: Use (the default x86 code is more efficient, but requires at
compiler flags for any other CPU specific configuration, least a 486). Note: Use compiler flags for any other CPU
e.g. "-m32" to build x86 code on an x64 system. specific configuration, e.g. "-m32" to build x86 code on
an x64 system.
no-sse2 Exclude SSE2 code pathes. Normally SSE2 extension is no-sse2 Exclude SSE2 code pathes. Normally SSE2 extension is
detected at run-time, but the decision whether or not the detected at run-time, but the decision whether or not the
...@@ -123,7 +152,14 @@ ...@@ -123,7 +152,14 @@
1a. Configure OpenSSL for your operation system automatically: 1a. Configure OpenSSL for your operation system automatically:
$ ./config [options] $ ./config [options] # Unix
or
$ @config [options] ! OpenVMS
For the remainder of this text, the Unix form will be used in all
examples, please use the appropriate form for your platform.
This guesses at your operating system (and compiler, if necessary) and This guesses at your operating system (and compiler, if necessary) and
configures OpenSSL based on this guess. Run ./config -t to see configures OpenSSL based on this guess. Run ./config -t to see
...@@ -140,12 +176,19 @@ ...@@ -140,12 +176,19 @@
OpenSSL knows about a range of different operating system, hardware and OpenSSL knows about a range of different operating system, hardware and
compiler combinations. To see the ones it knows about, run compiler combinations. To see the ones it knows about, run
$ ./Configure $ ./Configure # Unix
or
$ perl Configure # All other platforms
For the remainder of this text, the Unix form will be used in all
examples, please use the appropriate form for your platform.
Pick a suitable name from the list that matches your system. For most Pick a suitable name from the list that matches your system. For most
operating systems there is a choice between using "cc" or "gcc". When operating systems there is a choice between using "cc" or "gcc". When
you have identified your system (and if necessary compiler) use this name you have identified your system (and if necessary compiler) use this name
as the argument to ./Configure. For example, a "linux-elf" user would as the argument to Configure. For example, a "linux-elf" user would
run: run:
$ ./Configure linux-elf [options] $ ./Configure linux-elf [options]
...@@ -159,20 +202,53 @@ ...@@ -159,20 +202,53 @@
defines various macros in crypto/opensslconf.h (generated from defines various macros in crypto/opensslconf.h (generated from
crypto/opensslconf.h.in). crypto/opensslconf.h.in).
1c. Configure OpenSSL for building outside of the source tree.
OpenSSL can be configured to build in a build directory separate from
the directory with the source code. It's done by placing yourself in
some other directory and invoking the configuration commands from
there.
Unix example:
$ mkdir /var/tmp/openssl-build
$ cd /var/tmp/openssl-build
$ /PATH/TO/OPENSSL/SOURCE/config [options]
or
$ /PATH/TO/OPENSSL/SOURCE/Configure [target] [options]
OpenVMS example:
$ set default sys$login:
$ create/dir [.tmp.openssl-build]
$ set default [.tmp.openssl-build]
$ @[PATH.TO.OPENSSL.SOURCE]config {options}
or
$ @[PATH.TO.OPENSSL.SOURCE]Configure {target} {options}
Paths can be relative just as well as absolute. Configure will
do its best to translate them to relative paths whenever possible.
2. Build OpenSSL by running: 2. Build OpenSSL by running:
$ make $ make # Unix
$ mms ! (or mmk) OpenVMS
This will build the OpenSSL libraries (libcrypto.a and libssl.a) and the This will build the OpenSSL libraries (libcrypto.a and libssl.a on
OpenSSL binary ("openssl"). The libraries will be built in the top-level Unix, corresponding on other platforms) and the OpenSSL binary
directory, and the binary will be in the "apps" directory. ("openssl"). The libraries will be built in the top-level directory,
and the binary will be in the "apps" subdirectory.
If "make" fails, look at the output. There may be reasons for If the build fails, look at the output. There may be reasons for
the failure that aren't problems in OpenSSL itself (like missing the failure that aren't problems in OpenSSL itself (like missing
standard headers). If it is a problem with OpenSSL itself, please standard headers). If it is a problem with OpenSSL itself, please
report the problem to <openssl-bugs@openssl.org> (note that your report the problem to <rt@openssl.org> (note that your message
message will be recorded in the request tracker publicly readable will be recorded in the request tracker publicly readable at
at https://www.openssl.org/community/index.html#bugs and will be https://www.openssl.org/community/index.html#bugs and will be
forwarded to a public mailing list). Include the output of "make forwarded to a public mailing list). Include the output of "make
report" in your message. Please check out the request tracker. Maybe report" in your message. Please check out the request tracker. Maybe
the bug was already reported or has already been fixed. the bug was already reported or has already been fixed.
...@@ -185,34 +261,40 @@ ...@@ -185,34 +261,40 @@
3. After a successful build, the libraries should be tested. Run: 3. After a successful build, the libraries should be tested. Run:
$ make test $ make test # Unix
$ mms test ! OpenVMS
If some tests fail, look at the output. There may be reasons for If some tests fail, look at the output. There may be reasons for
the failure that isn't a problem in OpenSSL itself (like a the failure that isn't a problem in OpenSSL itself (like a
malfunction with Perl). You may want increased verbosity, that malfunction with Perl). You may want increased verbosity, that
can be accomplished like this: can be accomplished like this:
$ HARNESS_VERBOSE=yes make test $ HARNESS_VERBOSE=yes make test # Unix
$ DEFINE HARNESS_VERBOSE YES
$ mms test ! OpenVMS
If you want to run just one or a few specific tests, you can use If you want to run just one or a few specific tests, you can use
the make variable TESTS to specify them, like this: the make variable TESTS to specify them, like this:
$ make TESTS='test_rsa test_dsa' test $ make TESTS='test_rsa test_dsa' test # Unix
$ mms/macro="TESTS=test_rsa test_dsa" test ! OpenVMS
And of course, you can combine: And of course, you can combine (Unix example shown):
$ HARNESS_VERBOSE=yes make TESTS='test_rsa test_dsa' test $ HARNESS_VERBOSE=yes make TESTS='test_rsa test_dsa' test
You can find the list of available tests like this: You can find the list of available tests like this:
$ make list-tests $ make list-tests # Unix
$ make list-tests ! OpenVMS
Have a look at the manual for the perl module Test::Harness to Have a look at the manual for the perl module Test::Harness to
see what other HARNESS_* variables there are. see what other HARNESS_* variables there are.
If you find a problem with OpenSSL itself, try removing any If you find a problem with OpenSSL itself, try removing any
compiler optimization flags from the CFLAG line in Makefile and compiler optimization flags from the CFLAGS line in Makefile and
run "make clean; make". run "make clean; make" or corresponding.
Please send a bug report to <openssl-bugs@openssl.org>, and when Please send a bug report to <openssl-bugs@openssl.org>, and when
you do, please run the following and include the output in your you do, please run the following and include the output in your
...@@ -222,105 +304,85 @@ ...@@ -222,105 +304,85 @@
4. If everything tests ok, install OpenSSL with 4. If everything tests ok, install OpenSSL with
$ make install $ make install # Unix
$ mms install ! OpenVMS
This will create the installation directory (if it does not exist) and
then the following subdirectories: This will install all the software components in this directory
tree under PREFIX (the directory given with --prefix or its
certs Initially empty, this is the default location default):
for certificate files.
man/man1 Manual pages for the 'openssl' command line tool Unix:
man/man3 Manual pages for the libraries (very incomplete)
misc Various scripts. bin/ Contains the openssl binary and a few other
private Initially empty, this is the default location utility scripts.
for private key files. include/openssl
Contains the header files needed if you want
If you didn't choose a different installation prefix, the to build your own programs that use libcrypto
following additional subdirectories will be created: or libssl.
lib Contains the OpenSSL library files.
bin Contains the openssl binary and a few other lib/engines Contains the OpenSSL dynamically loadable engines.
utility programs. share/man/{man1,man3,man5,man7}
include/openssl Contains the header files needed if you want to Contains the OpenSSL man-pages.
compile programs with libcrypto or libssl. share/doc/openssl/html{man1,man3,man5,man7}
lib Contains the OpenSSL library files themselves. Contains the HTML rendition of the man-pages.
Use "make install_sw" to install the software without documentation, OpenVMS ('arch' is replaced with the architecture name, "Alpha"
and "install_docs_html" to install HTML renditions of the manual or "ia64"):
pages.
[.EXE.'arch'] Contains the openssl binary and a few other
utility scripts.
[.include.openssl]
Contains the header files needed if you want
to build your own programs that use libcrypto
or libssl.
[.LIB.'arch'] Contains the OpenSSL library files.
[.ENGINES.'arch']
Contains the OpenSSL dynamically loadable engines.
[.SYS$STARTUP] Contains startup, login and shutdown scripts.
These define appropriate logical names and
command symbols.
Additionally, install will add the following directories under
OPENSSLDIR (the directory given with --openssldir or its default)
for you convenience:
certs Initially empty, this is the default location
for certificate files.
private Initially empty, this is the default location
for private key files.
misc Various scripts.
Package builders who want to configure the library for standard Package builders who want to configure the library for standard
locations, but have the package installed somewhere else so that locations, but have the package installed somewhere else so that
it can easily be packaged, can use it can easily be packaged, can use
$ make DESTDIR=/tmp/package-root install $ make DESTDIR=/tmp/package-root install # Unix
$ mms/macro="DESTDIR=TMP:[PACKAGE-ROOT]" install ! OpenVMS
The specified destination directory will be prepended to all The specified destination directory will be prepended to all
installation target filenames. installation target paths.
NOTE: The header files used to reside directly in the include
directory, but have now been moved to include/openssl so that
OpenSSL can co-exist with other libraries which use some of the
same filenames. This means that applications that use OpenSSL
should now use C preprocessor directives of the form
#include <openssl/ssl.h>
instead of "#include <ssl.h>", which was used with library versions
up to OpenSSL 0.9.2b.
If you install a new version of OpenSSL over an old library version, Compatibility issues with previous OpenSSL versions:
you should delete the old header files in the include directory.
Compatibility issues:
* COMPILING existing applications * COMPILING existing applications
To compile an application that uses old filenames -- e.g. OpenSSL 1.1 hides a number of structures that were previously
"#include <ssl.h>" --, it will usually be enough to find open. This includes all internal libssl structures and a number
the CFLAGS definition in the application's Makefile and of EVP types. Accessor functions have been added to allow
add a C option such as controlled access to the structures' data.
-I/usr/local/ssl/include/openssl
to it.
But don't delete the existing -I option that points to
the ..../include directory! Otherwise, OpenSSL header files
could not #include each other.
* WRITING applications
To write an application that is able to handle both the new
and the old directory layout, so that it can still be compiled
with library versions up to OpenSSL 0.9.2b without bothering
the user, you can proceed as follows:
- Always use the new filename of OpenSSL header files,
e.g. #include <openssl/ssl.h>.
- Create a directory "incl" that contains only a symbolic This means that some software needs to be rewritten to adapt to
link named "openssl", which points to the "include" directory the new ways of doing things. This often amounts to allocating
of OpenSSL. an instance of a structure explicitly where you could previously
For example, your application's Makefile might contain the allocate them on the stack as automatic variables, and using the
following rule, if OPENSSLDIR is a pathname (absolute or provided accessor functions where you would previously access a
relative) of the directory where OpenSSL resides: structure's field directly.
incl/openssl: <TBA>
-mkdir incl
cd $(OPENSSLDIR) # Check whether the directory really exists
-ln -s `cd $(OPENSSLDIR); pwd`/include incl/openssl
You will have to add "incl/openssl" to the dependencies Some APIs have changed as well. However, older APIs have been
of those C files that include some OpenSSL header file. preserved when possible.
- Add "-Iincl" to your CFLAGS.
With these additions, the OpenSSL header files will be available
under both name variants if an old library version is used:
Your application can reach them under names like <openssl/foo.h>,
while the header files still are able to #include each other
with names of the form <foo.h>.
Note on multi-threading Note on multi-threading
...@@ -372,24 +434,3 @@ ...@@ -372,24 +434,3 @@
Please check out the manual pages for RAND_add(), RAND_bytes(), RAND_egd(), Please check out the manual pages for RAND_add(), RAND_bytes(), RAND_egd(),
and the FAQ for more information. and the FAQ for more information.
Note on support for multiple builds
-----------------------------------
OpenSSL is usually built in its source tree. Unfortunately, this doesn't
support building for multiple platforms from the same source tree very well.
It is however possible to build in a separate tree through the use of lots
of symbolic links, which should be prepared like this:
mkdir -p objtree/"`uname -s`-`uname -r`-`uname -m`"
cd objtree/"`uname -s`-`uname -r`-`uname -m`"
(cd $OPENSSL_SOURCE; find . -type f) | while read F; do
mkdir -p `dirname $F`
rm -f $F; ln -s $OPENSSL_SOURCE/$F $F
echo $F '->' $OPENSSL_SOURCE/$F
done
make -f Makefile.in clean
OPENSSL_SOURCE is an environment variable that contains the absolute (this
is important!) path to the OpenSSL source tree.
Also, operations like 'make update' should still be made in the source tree.
INSTALLATION ON THE VMS PLATFORM
--------------------------------
Intro
-----
This file is divided in the following parts:
Requirements - Mandatory reading.
Cheking the distribution - Mandatory reading.
Quick start
Test <TO BE ADDED>
Installation <TO BE ADDED>
Backward portability <TO BE ADDED>
Possible bugs and quirks <TO BE ADDED>
Requirements
------------
To build and install OpenSSL, you will need:
* Perl 5 with core modules (please read README.PERL)
* The perl module Text::Template (please read README.PERL)
* DEC C or some other ANSI C compiler. VAX C is *not* supported.
[Note: OpenSSL has only been tested with DEC C. Compiling with
a different ANSI C compiler may require some work]
Checking the distribution
-------------------------
There have been reports of places where the distribution didn't quite
get through, for example if you've copied the tree from a NFS-mounted
Unix mount point.
The easiest way to check if everything got through as it should is to
check for one of the following files:
[.crypto]opensslconf^.h.in
The best way to get a correct distribution is to download the gzipped
tar file from ftp://ftp.openssl.org/source/, use GUNZIP to uncompress
it and use VMSTAR to unpack the resulting tar file.
GUNZIP is available {FIXME: where is it available?}
VMSTAR is available {FIXME: where is it available?}
Quick start
-----------
If you want to just get on with it, do this:
$ @config
$ mms
$ mms test
$ mmm install
This will buidl and install OpenSSL in the default location, which is
SYS$COMMON:[OPENSSL-'VERSION']. If you want it to be anywhere else,
run config.com like this:
$ @config --prefix=PROGRAM:[OPENSSL]
NOTES FOR THE OPENVMS PLATFORM
==============================
Requirement details
-------------------
In addition to the requirements listed in INSTALL, these are required
as well:
* At least ODS-5 disk organization for source and build.
Installation can be done on any existing disk organization.
About ANSI C compiler
---------------------
An ANSI C compiled is needed among other things. This means that VAX C
is not and will not be supported.
We have only tested with DEC C (a.k.a HP VMS C / VSI C), compiling with
a different ANSI C compiler may require some work.
Checking the distribution
-------------------------
There have been reports of places where the distribution didn't quite
get through, for example if you've copied the tree from a NFS-mounted
Unix mount point.
The easiest way to check if everything got through as it should is to
check for one of the following files:
[.crypto]opensslconf^.h.in
The best way to get a correct distribution is to download the gzipped
tar file from ftp://ftp.openssl.org/source/, use GZIP -d to uncompress
it and VMSTAR to unpack the resulting tar file.
Gzip and VMSTAR are available here:
http://antinode.info/dec/index.html#Software
Should you need it, you can find UnZip for VMS here:
http://www.info-zip.org/UnZip.html
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册