0. Prerequisites (install required packages)

sudo apt update
sudo apt install -y git build-essential pkg-config make \\
  libboost-all-dev libeigen3-dev libtbb-dev openjdk-21-jdk

1. Git Clone the GCAM-Core Repository

cd ~
git clone <https://github.com/JGCRI/gcam-core.git> gcam-v8.2
cd gcam-core

2. Make project branch

Make a new branch successing tag gcam-v8.2

git checkout -b <new_branch_name> gcam-v8.2

3. Compiling Hector

git submodule init cvs/objects/climate/source/hector
git submodule update cvs/objects/climate/source/hector

4. Manual Copy - libs Bundle

Download a Windows Release Package v8.2 manually and copy the libs folder inside to WSL Home

5. Path/Environment Variable Setting (Java 21)

# apply to sesstion
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export JAVA_INCLUDE="$JAVA_HOME/include"
export JAVA_INCLUDE_LINUX="$JAVA_HOME/include/linux"
export JAVA_LIB="$JAVA_HOME/lib/server"

export TBB_INCLUDE=/usr/include/tbb
export TBB_LIB=/usr/lib/x86_64-linux-gnu
export BOOST_INCLUDE=/usr/include
export BOOST_LIB=/usr/lib/x86_64-linux-gnu
export EIGEN_INCLUDE=/usr/include/eigen3

export JARS_LIB="$HOME/libs/jars/*"

# permanent application
cat >> ~/.bashrc <<'EOF'
export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64
export JAVA_INCLUDE="$JAVA_HOME/include"
export JAVA_INCLUDE_LINUX="$JAVA_HOME/include/linux"
export JAVA_LIB="$JAVA_HOME/lib/server"
export TBB_INCLUDE=/usr/include/tbb
export TBB_LIB=/usr/lib/x86_64-linux-gnu
export BOOST_INCLUDE=/usr/include
export BOOST_LIB=/usr/lib/x86_64-linux-gnu
export EIGEN_INCLUDE=/usr/include/eigen3
export JARS_LIB="$HOME/libs/jars/*"
EOF
source ~/.bashrc

6. Copy input/gcamdata/xml to GCAM

Or you can driver_drake to generate xml input files from gcamdata.

7. Build & Run

# build
cd ~/gcam-v8.2/gcam-core/cvs/objects/build/linux
make gcam -j"$(nproc)"

# prepare for run
cd ~/gcam-v8.2/gcam-core/exe
export CLASSPATH="./XMLDBDriver.jar:$JARS_LIB:../output/modelinterface/ModelInterface.jar"

# run
./gcam.exe -C configuration_ref.xml