aboutsummaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README472
1 files changed, 472 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000000..50280169a0
--- /dev/null
+++ b/README
@@ -0,0 +1,472 @@
+===========================================================================
+ OpenSource Erlang/OTP
+===========================================================================
+
+
+Please read the whole file before attempting to build and install Erlang.
+You can find more information about OpenSource Erlang at
+
+ http://www.erlang.org/
+
+The source code for Erlang/OTP can also be found in a Git
+repository at
+
+ http://github.com/erlang/otp
+
+%CopyrightBegin%
+
+Copyright Ericsson AB 1998-2009. All Rights Reserved.
+
+The contents of this file are subject to the Erlang Public License,
+Version 1.1, (the "License"); you may not use this file except in
+compliance with the License. You should have received a copy of the
+Erlang Public License along with this software. If not, it can be
+retrieved online at http://www.erlang.org/.
+
+Software distributed under the License is distributed on an "AS IS"
+basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+the License for the specific language governing rights and limitations
+under the License.
+
+%CopyrightEnd%
+
+
+Portability
+-----------
+
+Erlang/OTP should be possible to build from source on any Unix
+system, including Mac OS X.
+
+Instructions for building from source on Windows are in the file README.win32.
+Binary releases for Windows can be found at http://www.erlang.org/
+
+At Ericsson we have a "Daily Build and Test" that runs on:
+
+ Operating system Versions
+ -----------------------------------------------------------
+ Solaris/Sparc32 8, 9, 10
+ Solaris/Sparc64 10
+ Solaris/x86 10
+ Linux/Suse x86 9.4, 10.1
+ Linux/Suse x86_64 10.0, 10.1, 11.0
+ FreeBSD x86 7.1
+ Mac OS X/Intel 10.4.11 (Tiger), 10.5.8 (Leopard)
+ Windows XP SP3, 2003, Vista
+
+We have also done some testing on Mac OS 10.6.0 (Snow Leopard).
+
+
+Versions known *not* to work
+-------------------------------------
+
+Suse linux 9.1 is shipped with a patched GCC version 3.3.3, having the
+rpm named gcc-3.3.3-41. That version has a serious optimization bug
+that makes it unusable for building the Erlang emulator. Please
+upgrade GCC to a newer version before building on Suse 9.1. Suse Linux
+EnterpriSe edition 9 (SLES9) has gcc-3.3.3-43 and is not affected.
+
+gcc-4.3.0 has a serious optimizer bug. It produces an Erlang emulator
+that will crash immediately. The bug is supposed to be fixed in gcc-4.3.1.
+
+FreeBSD had a bug which caused kqueue/poll/select to fail to detect
+that a writev() on a pipe has been made. This bug should have been fixed
+in FreeBSD 6.3 and FreeBSD 7.0. More information can be found at:
+* http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/kern/sys_pipe.c
+* http://lists.freebsd.org/pipermail/freebsd-arch/2007-September/006790.html
+NetBSD and DragonFlyBSD probably have or have had the same bug.
+
+getcwd() on Solaris 9 can cause an emulator crash. If you have async-threads
+enabled you can increase the stack size of the async-threads as a temporary
+workaround. See the +a command-line argument in the documentation of erl(1).
+Without async-threads the emulator isn't as vulnerable to this bug, but if
+you hit it without async-threads the only workaround available is to enable
+async-threads and increase the stack size of the async-threads.
+Sun has however released patches that fixes the issue:
+Problem Description: 6448300 large mnttab can cause stack overrun during
+ Solaris 9 getcwd
+* http://sunsolve.sun.com/search/document.do?assetkey=1-21-112874-40-1&searchclause=6448300
+* http://sunsolve.sun.com/search/document.do?assetkey=1-21-114432-29-1&searchclause=6448300
+
+Required utilities
+------------------
+
+These are the tools you will need in order to unpack and build Erlang/OTP.
+
+ Unpacking
+ ---------
+
+ GNU unzip, or a modern uncompress.
+
+ A TAR program that understands the GNU TAR format for long
+ filenames (such as GNU TAR).
+
+
+ Compiling
+ ---------
+
+ GNU make
+
+ GNU C compiler
+
+ Perl 5
+
+ GNU m4 If hipe (native code) support is enabled.
+
+ ncurses (Or termcap or termlib.) The development headers and
+ libraries are needed, often known as ncurses-devel.
+ (Use --without-termcap to build without any of these
+ libraries. Only the old shell (without any line
+ editing) can be used.)
+
+ OpenSSL Optional, but needed for building the Erlang/OTP
+ applications 'ssl' and 'crypto'. You need the
+ "development package" of OpenSSL, i.e. including
+ the header files. For building the application 'ssl'
+ the OpenSSL binary command program 'openssl' is also
+ needed.
+
+ At least version 0.9.7 of OpenSSL is required.
+
+ Sun Java jdk-1.5.0 Or higher. Optional but needed for building
+ the Erlang/OTP application 'jinterface' and parts
+ of 'ic' and 'orber'. We have also tested
+ IBM's JDK 1.5.0.
+
+ X Windows Optional, but development headers and libraries
+ are needed to build the Erlang/OTP application 'gs'
+ on Unix/Linux.
+
+ sed There seem to be some problems with some of the
+ 'sed' version on Solaris. Make sure "/bin/sed"
+ or "/usr/bin/sed" is used on the Solaris platform.
+
+ Flex Optional, headers and libraries are needed to
+ build the flex scanner for the megaco application
+ on Unix/Linux.
+
+
+ Installing
+ ----------
+
+ An 'install' program that can take multiple file names.
+
+
+How to build and install Erlang/OTP
+-----------------------------------
+
+If you are building in a Git reposistory, see
+
+ http://wiki.github.com/erlang/otp
+
+The following instructions are for building using the
+source tar ball.
+
+Start by unpacking the Erlang/OTP distribution file with your
+GNU compatible TAR
+
+ 1) gunzip -c otp_src_R13B03.tar.gz | tar xf -
+ 1) zcat otp_src_R13B03.tar.gz | tar xf -
+
+Now cd into the base directory
+
+ 2) cd otp_src_R13B03
+
+On some platforms Perl may behave strangely if certain locales are set,
+so optionally you may need to set the LANG variable:
+
+ 3a) LANG=C; export LANG #Bourne shell
+or
+ 3b) setenv LANG C #C-shell
+
+Run the following commands
+
+ 4a) ./configure [ options ]
+or
+ 4b) ./configure --prefix=<BaseDir> [ other options ]
+
+By default, Erlang/OTP will be installed in /usr/local/{bin,lib/erlang,man/man1}.
+To instead install in <BaseDir>/{bin,lib/erlang,man/man1}, use the --prefix=<BaseDir>
+option.
+
+If you upgraded the source with some patch you may need to clean up
+from previous builds before the new build. Do a "make clean"; see
+"Caveats" below.
+
+ 5) make
+ 6) make install
+
+Let's go through them in some detail:
+
+Step 4 runs a configuration script created by the GNU autoconf
+utility, which checks for system specific features and then creates a
+number of makefiles.
+
+The configure script allows you to customize a number of parameters;
+type "./configure --help" for details.
+
+One of the things you can specify is where Erlang/OTP should be installed: by
+default Erlang/OTP will be installed in /usr/local/{bin,lib/erlang,man/man1};
+to keep the same structure but install in a different place, <Dir> say,
+use the --prefix argument like this:
+"./configure --prefix=<Dir>".
+
+This step will also configure any additional libraries unpacked in step 3
+(if you didn't add any of the extra libraries configure will issue a warning
+saying that there is no configuration information in lib; this warning can
+safely be ignored).
+
+You can also specify where the OpenSSL include and library files are
+located, or alternatively disable the use of SSL and Crypto.
+(The details can be found by typing './configure --help'.)
+
+Other options are:
+
+ --enable-smp-support See the next section.
+
+ --disable-smp-support See the next section.
+
+ --disable-threads Disable support for threaded I/O;
+ this option also disables building
+ of the SMP emulator. (See the next section.)
+
+ --enable-threads Enable support for threaded I/O.
+ (This is the default if SMP support is enabled.
+ See the next section.)
+
+ --disable-hipe Disable HiPE (High-Performance Erlang).
+ HiPE will automatically be enabled on
+ supported platforms.
+
+
+ Step 5 builds the Erlang/OTP system. On a fast computer,
+this will take about 5 minutes. After completion of this step,
+you should have a working Erlang/OTP system which you can
+try by typing "bin/erl". This should start up Erlang/OTP and give you
+a prompt.
+
+ Step 6 is optional. It installs Erlang/OTP (if you change your
+mind about where you wish to install you can rerun step 4, without
+having to do step 5 again).
+
+The source tree is delivered with a lot of platform independent
+build results already pre-built. If you want to remove these pre-built
+files, invoke './otp_build remove_prebuilt_files' from the $ERL_TOP
+directory. After you have done this, you can build exactly the same way
+as before, but the build process will take a much longer time.
+
+NOTE: Doing 'make clean' in an arbitrary directory of the source tree,
+may remove files needed for bootstrapping the build. Doing
+'./otp_build save_bootstrap' from the $ERL_TOP directory before
+doing 'make clean' will ensure that it will be possible to build after
+doing 'make clean'. './otp_build save_bootstrap' will be invoked
+automatically when 'make' is invoked from ERL_TOP with either the
+clean target, or the default target. It is also automatically invoked
+if './otp_build remove_prebuilt_files' is invoked.
+
+If you or your system has special requirements please read the
+Makefile for additional configuration information.
+
+Support for SMP (Symmetric Multi Processing)
+--------------------------------------------
+
+An emulator with SMP support will be built by default on most platforms
+if a usable POSIX thread library or native Windows threads is found.
+
+You can force building of an SMP emulator, by using
+"./configure --enable-smp-support". However, if configure doesn't
+automatically enable SMP support, the build is very likely to fail.
+
+Use "./configure --disable-smp-support" if you for some reason don't
+want to have the emulator with SMP support built.
+
+If SMP support is enabled, support for threaded I/O will also be turned on
+(also in the emulator without SMP support).
+
+The 'erl' command will automatically start the SMP emulator if the
+computer has more than one logical processor. You can force a start
+of the emulator with SMP support by passing '-smp enable' as
+command line arguments to erl, and you can force a start of the
+emulator without SMP support by passing '-smp disable'.
+
+How to install the Erlang/OTP documentation
+-------------------------------------------
+
+For some graphical tools to find the on-line help you have to install
+the HTML documentation on top of the installed OTP applications, i.e.
+
+ cd <PrefixDir>/lib/erlang
+ gunzip -c otp_html_R<XY>B-<Z>.tar.gz | tar xf -
+
+For "erl -man <page>" to work the Unix manual pages have to be
+installed in the same way, i.e.
+
+ cd <PrefixDir>/lib/erlang
+ gunzip -c otp_man_R<XY>B-<Z>.tar.gz | tar xf -
+
+
+GS (Graphic System)
+-------------------
+
+GS now Tcl/Tk 8.4. It will be searched for when starting GS.
+
+
+Using HiPE
+----------
+
+HiPE supports the following system configurations:
+
+x86:
+ All 32-bit and 64-bit mode processors should work.
+
+ The following systems are supported:
+
+ Linux:
+ Fedora Core is supported.
+ Both 32-bit and 64-bit modes are supported.
+
+ NPTL glibc is strongly preferred, or a LinuxThreads
+ glibc configured for "floating stacks". Old non-floating
+ stacks glibcs have a fundamental problem that makes HiPE
+ support and threads support mutually exclusive.
+ Solaris:
+ Solaris 10 (32-bit and 64-bit) and 9 (32-bit) are
+ supported.
+
+ The build requires a version of the GNU C compiler (gcc)
+ that has been configured to use the GNU assembler (gas).
+ Sun's x86 assembler is emphatically /not/ supported.
+ FreeBSD:
+ FreeBSD 6.1 and 6.2 in 32-bit and 64-bit modes should work.
+ MacOSX/Darwin:
+ Darwin 9.8.0 in 32-bit mode should work.
+
+PowerPC:
+ All 32-bit 6xx/7xx(G3)/74xx(G4) processors should work.
+ 32-bit mode on 970 (G5) and POWER5 processors should work.
+
+ Linux (Yellow Dog) and Mac OSX 10.4 are supported.
+
+SPARC:
+ All UltraSPARC processors running 32-bit user code should work.
+
+ Solaris 9 and Linux (Aurora) are supported.
+
+ On Solaris the build requires a gcc that has been configured
+ to use Sun's assembler and linker. Using the GNU assembler but
+ Sun's linker has been known to cause problems.
+ARM:
+ ARMv5TE (i.e. XScale) processors should work.
+ Both big-endian and little-endian modes are supported.
+
+ Linux is supported.
+
+HiPE is automatically enabled on the following systems:
+ x86 in 32-bit mode: Linux, Solaris, FreeBSD
+ x86 in 64-bit mode: Linux, Solaris, FreeBSD
+ PowerPC: Linux, MacOSX
+ SPARC: Linux
+ ARM: Linux
+On other supported systems you need to "./configure --enable-hipe".
+
+
+If you are running on a platform supporting HiPE and if
+you have not disabled HiPE, you can compile a module into
+native code like this from the Erlang shell:
+
+ c(Module, native).
+
+or
+
+ c(Module, [native|OtherOptions]).
+
+Using the erlc program, write like this:
+
+ erlc +native Module.erl
+
+The native code will be placed into the beam file and automatically
+loaded when the beam file is loaded.
+
+To add hipe options, write like this from the Erlang shell:
+
+ c(Module, [native,{hipe,HipeOptions}|MoreOptions]).
+
+Use
+
+ hipe:help_options().
+
+to print out the available options.
+
+
+Mac OS X (Darwin)
+-----------------
+
+We test Mac OS X 10.4.11 (Tiger) and Mac OS X 10.5.x (Leopard)
+in our daily builds (but only on Intel processors).
+
+Make sure that the command "hostname" returns a valid fully qualified
+host name (this is configured in "/etc/hostconfig").
+
+If you develop linked-in drivers (shared library) you need to link
+using "gcc" and the flags "-bundle -flat_namespace -undefined
+suppress". You also include "-fno-common" in CFLAGS when
+compiling. Use ".so" as the library suffix.
+
+Universal 32bit binaries can be built on an Intel Mac using the
+--enable-darwin-universal configure option. There still may occur
+problems with certain applications using this option, but the base
+system should run smoothly.
+
+When building universal binaries on a PowerPC Mac (at least on Tiger),
+you must point out a suitable SDK that contains universal binaries.
+For instance, to build universal binaries for Tiger (10.4):
+
+CFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" LDFLAGS="-isysroot /Developer/SDKs/MacOSX10.4u.sdk" ./configure --enable-darwin-universal
+
+Also, if you run Leopard, but want to build for Tiger, you must do
+
+export MACOSX_DEPLOYMENT_TARGET=10.4
+
+before running the above configure command.
+
+Experimental support for 64bit x86 darwin binaries can be enabled
+using the --enable-darwin-64bit configure flag. The 64bit binaries are
+best built and run on Leopard, but most of the system also works on
+Tiger (Tiger's 64bit libraries are, however, limited; therefore e.g. odbc,
+crypto, ssl etc. are not supported in Tiger). 64bit PPC binaries are not
+supported and we have no plans to add such support (no machines to
+test on).
+
+Universal binaries and 64bit binaries are mutually exclusive options.
+
+
+Make and the variable "ERL_TOP"
+-------------------------------
+
+All the makefiles in the entire directory tree use the environment
+variable ERL_TOP to find the absolute path of the installation. The
+configure script will figure this out and set it in the top level
+Makefile (which, when building, it will pass on). However, when
+developing it is sometimes convenient to be able to run make in a
+subdirectory. To do this you must set the ERL_TOP variable
+before you run make.
+
+For example, assume your GNU make program is called "make" and you
+want to rebuild the application STDLIB, then you could do:
+
+ cd lib/stdlib; env ERL_TOP=<Dir> make
+
+where <Dir> would be what you find ERL_TOP is set to in the top level
+Makefile.
+
+
+Authors
+-------
+Authors are mostly listed in the application's AUTHORS files,
+that is $ERL_TOP/lib/*/AUTHORS and $ERL_TOP/erts/AUTHORS,
+not in the individual source files.
+
+
+More Information
+----------------
+
+More information can be found at http://www.erlang.org.