Go here: http://45.76.81.249/zOS
~.bashrc
export PATH=/opt/IBM/bin:$PATH
export CFLAGS="$CFLAGS -Wno-error"
Folders
mkdir PEP_ZOS
sudo mkdir -p /opt/IBM
sudo chown `whoami`:users -R /opt/IBM
Repositories
cd PEP_ZOS
git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
cd linux
git checkout v5.3.12
cd ..
git clone https://github.com/leviathanch/binutils.git
cd binutils
git checkout lev/master
git clone https://github.com/leviathanch/gcc.git
cd gcc
git checkout lev/master
cd ..
got clone https://github.com/leviathanch/glibc.git
cd glibc
git checkout lev/master
cd ..
Building steps
First we need to build the binutils with patches to generate and link bytecode recognized by the z/OS environment.
cd binutils/build
../configure --prefix=/opt/IBM --program-prefix=s390x-ibm-zos-gnu- --target=s390x-ibm-zos-gnu
make -j4
make install
cd ../..
Now we need to provide the kernel headers, since this is a requirement for building gcc and glibc (even if z/OS isn’t a Linux)
cd linux
make ARCH=s390 menuconfig (got to exit and save)
make ARCH=s390 INSTALL_HDR_PATH=/opt/IBM/s390x-ibm-zos-gnu headers_install
cd ..
Now we build the first stage of the gcc bootstrap phase
cd gcc/build
../configure --prefix=/opt/IBM --program-prefix=s390x-ibm-zos-gnu- --target=s390x-ibm-zos-gnu --disable-multilib --enable-languages=c,c++ --disable-shared --disable-checking
make -j4 all-gcc
make install-gcc
cd ../..
Now we build the GLIBC on which the rest of GCC depends
cd glibc/build
export CFLAGS="-Wno-error -I/opt/IBM/include -L/opt/IBM/lib64/gcc/s390x-ibm-zos-gnu/8.3.1 -I/opt/IBM/lib64/gcc/s390x-ibm-zos-gnu/8.3.1/include -static -fsplit-stack -O3 -fexec-charset=IBM-1047"
../configure --prefix=/opt/IBM/s390x-ibm-zos-gnu --host=s390x-ibm-zos-gnu --target=s390x-ibm-zos-gnu --build=s390x-ibm-zos-gnu --disable-multilib --with-headers=/opt/IBM/s390x-ibm-zos-gnu/include --disable-shared --disable-nscd
make install-bootstrap-headers=yes install-headers
make -j4 csu/subdir_lib
install csu/*.o /opt/IBM/s390x-ibm-zos-gnu/lib/
touch /opt/IBM/s390x-ibm-zos-gnu/include/gnu/stubs.h
s390x-ibm-zos-gnu-gcc -nostdlib -nostartfiles -shared -x c /dev/null -o /opt/IBM/s390x-ibm-zos-gnu/lib/libc.so
cd ../..
Now we’ve got to build libgcc
cd gcc/build
make -j4 all-target-libgcc
make install-target-libgcc
cd ../..
Now we’ve got to finalize the GLIBC build
cd glibc/build
make -j4
make install
cd ../..