Install ROOT and Geant4 on Windows WSL

Versions of the main software

  1. Windows 10 / 11 with WSL
  2. ROOT 6.26/00
  3. Geant4.3.11

Windows 10 / 11 with WSL (Updated 4.12.2022)

  • Running ROOT inside widows is not advises
  • Instead, use Windows 10 / 11 with WSL (Windows Subsystem for Linux) and load Ubuntu in there
    • Then you will have an Ubuntu session inside Windows
    • See these notes Root inside WSL

Check the C++ and C Compiler Works

  1. To make a Hello-World program Take this text fragment into nedit, then save it as
    • Then issue
      g++ -o Hello-World
    • and run by saying

Now install ROOT

  1. Download the ROOT source from
  2. Use the latest production version, which is 5.16/00 at the time of writing this document.
  3. Now, install ROOT. "cd" to the parent dir of where ROOT should be installed so "cd /cygdrive/c/" to have ROOT in /cygdrive/c/root). Open a cygwin bash shell, unpack root (assuming you downloaded ROOT to C:\install) by typing
    tar xzf /cygdrive/c/install/root_v...win32gcc.tar.gz
  4. The environment variables like PATH must be set properly (seee the note on the .bashrc file above)
    export ROOTSYS=/<where you instlled root>
    export PATH=$ROOTSYS/bin:$PATH
  5. Building ROOT with cygwin/GCC consists of two steps:
    1. First, you need to initialize the build system (configure), telling it that we build for win32gcc then the build system needs to compile everything (via make). I will assume that your ROOT sources reside in C:\INSTALL - just as an example. We will build ROOT in C:\root - but you can do this anywhere you want, e.g. in /usr/shared (as long as the directory name does not contain spaces like Program\ Files). Also, the Windows environment variables TMP, TEMP, TMPDIR may not contain spaces, otherwise make fails when it tries to build the library "libfreetype.a" (thanks to Stilianos Kesisoglou for providing this hint).
    2. Second build (compile and link) root
    3. Third, you make the map.
  6. Open a cygwin bash shell .....
    cd /cygdrive/c
    ./configure win32gcc 
    make map
  7. After about 30 minutes to an hour you have the full glory of root available for use! Check it works .... Open a cygwin X-shell ... and type root.


Root version 4.05
If it gives an error with the file wingcc, then find an updated version on the web.
Root version 5.08
The above problem has gone

Now Install Geant

  1. Decide on an install environment, and establish the environment variables. The example for the bash shell follows for CHLEP. You can put these commands into a file called " Δ".
    export CLHEP_DIR=/cygdrive/c/cygwin/usr/local
    export PATH="$PATH:$CLHEP_DIR/bin"
  2. Install and build CLHEP as per the instructions at (
  3. The environment example for geant4 is
  4. Geant wants to know where is CLHEP
    export CLHEP_INCLUDE_DIR=$CLHEP_DIR/include
    export CLHEP_LIB_DIR=$CLHEP_DIR/lib
    export CLHEP_LIB=CLHEP
  5. Geant wants to know where is the root build directory
    export G4INSTALL=/cygdrive/c/geant4.7.1
    export G4INCLUDE=$G4INSTALL/include
    export G4LIB=$G4INSTALL/lib
  6. Now select your system don't use compiler of MSVC++
  7. Simply go for a straight linux environment
    export G4SYSTEM=WIN32-g++
  8. Now choose where you will put the executables and put them in the path
    export G4WORKDIR="$HOME/My Documents/geant4"
    export G4TMP=$G4INSTALL/tmp
    export PATH="$PATH:$G4WORKDIR/bin/$G4SYSTEM"
  9. Now select various options ->
    export G4LIB_BUILD_STATIC=1
    #export G4LIB_USE_GRANULAR=1 
    export G4DEBUG=1
  10. to use the debugger or not
    export G4OPTIMISE=' '
  11. We will use ROOT to analyse not JAG or AIDA
    export G4ANALYSIS_USE=0
    export G4UI_USE_ROOT=1
    #export G4UI_USE_TCSH=1
    export G4UI_USE_TERMINAL=1
    export G4UI_USE_GAG=1
    export G4UI_USE_XAW=1
    export G4UI_USE_WO=1
    #export G4VIS_USE_OIX=0
    #export G4VIS_USE_DAWN=1
    #export G4VIS_USE_VRML=1
  12. This prepares for Open GL build
    export OGLHOME=/usr/X11R6
  13. Choose non-permanent graphics window, low memory option
    export G4VIS_USE_OPENGLX=1
    #export G4VIS_USE_OPENGLXM=1
  14. Start a new X-shell and make sure your environment variables come through (use shell scripts to automate their setting). Build geant4 (after reading about installation procedures at just by saying (in the geant source directory)
  15. Then test, by going to the novice N03 example tree and saying
  16. You can add a new visualisation manager by the following minimal rebuild of the visualisation system
    touch $G4INSTALL/source/visualization/management/src/
    cd $G4INSTALL/source/visualization/OpenGL; make clean
    cd $G4INSTALL/source/interfaces; make clean
    cd $G4INSTALL/source/; make
  17. Rebuild the your application as follows:
    cd /path/to/example
    gmake clean
  18. For example, from the GEANT4 www-page, you can follow the link to the Installation Introduction, and from there to the Dawn pages, and get Dawn working as well.