Skip to content

Building OCaml

linuxonz edited this page Nov 28, 2024 · 47 revisions

Building OCaml

Below versions of OCaml are available in respective distributions at the time of creation of these build instructions:

  • RHEL (8.8, 8.10) have 4.07.0
  • RHEL (9.2, 9.4) have 4.11.1
  • SLES (15 SP5, 15 SP6) have 4.05.0
  • Ubuntu 20.04 has 4.08.1
  • Ubuntu 22.04 has 4.13.1
  • Ubuntu (24.04, 24.10) have 4.14.1

The instructions provided below specify the steps to build OCaml v5.2.1 on Linux on IBM Z for following distributions:

  • RHEL (8.8, 8.10, 9.2, 9.4)
  • SLES (15 SP5, 15 SP6)
  • Ubuntu (20.04, 22.04, 24.04, 24.10)

General Notes:

  • When following the steps below please use a standard permission user unless otherwise specified.
  • A directory /<source_root>/ will be referred to in these instructions, this is a temporary writable directory anywhere you'd like to place it.

1. Install Dependencies

export SOURCE_ROOT=/<source_root>/

1.1. Ensure that GCC and GNU make are installed and up to date:

  • RHEL (8.8, 8.10)

    sudo yum install -y gcc make git gawk sed diffutils
  • RHEL (9.2, 9.4)

     sudo yum install -y gcc gcc-c++ make git gawk sed diffutils binutils lbzip2 hostname tar unzip cmake curl wget vim patch tcl gettext autoconf libtool automake bzip2 zlib zlib-devel bison
  • SLES (15 SP5, 15 SP6)

    sudo zypper install -y gcc make git-core gawk sed diffutils
  • Ubuntu (20.04, 22.04, 24.04, 24.10)

    sudo apt-get update
    sudo apt-get -y install gcc make git gawk sed diffutils

1.2. Build GCC 10.4.0 from source on RHEL 9.x

cd $SOURCE_ROOT
URL=https://ftp.gnu.org/gnu/gcc/gcc-10.4.0/gcc-10.4.0.tar.gz 
curl -sSL $URL | tar xzf - || error "GCC 10.4.0"

cd gcc-10.4.0
./contrib/download_prerequisites
mkdir build-gcc
cd build-gcc
../configure -v --with-bugurl=file:///usr/share/doc/gcc-10/README.Bugs --enable-languages=c,c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-10 --program-prefix=s390x-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-libphobos-checking=release --with-target-system-zlib=auto --enable-objc-gc=auto --disable-werror --with-arch=zEC12 --with-long-double-128 --disable-multilib --enable-checking=release --build=s390x-linux-gnu --host=s390x-linux-gnu --target=s390x-linux-gnu --with-build-config=bootstrap-lto-lean --enable-link-mutex  --enable-__cxa_atexit
make -j$(nproc)
sudo make install

sudo rm -f /usr/bin/gcc
sudo rm -f /usr/bin/g++
export CC=/usr/bin/s390x-linux-gnu-gcc-10
export CXX=/usr/bin/s390x-linux-gnu-g++-10
sudo ln -sf /usr/bin/s390x-linux-gnu-gcc-10 /usr/bin/gcc
sudo ln -sf /usr/bin/s390x-linux-gnu-g++-10 /usr/bin/g++

2. Build and Install

2.1. Download the OCaml source and navigate into the top-level directory:

cd $SOURCE_ROOT
git clone -b 5.2.1 https://github.com/ocaml/ocaml.git
cd ocaml

2.2. Configure the build by issuing this command:

./configure --enable-ocamltest

2.3. Build the bytecode, native-code and fast versions of OCaml compilers:

make

2.4. Run the test suits (Optional):

make tests

2.5. Install the OCaml system:

sudo make install

2.6. Validate installation (Optional):

ocaml --version

The output should be:

The OCaml toplevel, version 5.2.1

References:

Clone this wiki locally