84 lines
2.9 KiB
Bash
84 lines
2.9 KiB
Bash
|
#!/bin/bash
|
|||
|
|
|||
|
# 使用 uname 获取操作系统类型
|
|||
|
OS_TYPE=$(uname -s)
|
|||
|
|
|||
|
# 根据操作系统类型安装外部依赖库
|
|||
|
case $OS_TYPE in
|
|||
|
Linux)
|
|||
|
# 判断是否是基于 Debian 的系统(如 Ubuntu)
|
|||
|
if [ -f /etc/debian_version ]; then
|
|||
|
echo "Detected Debian-based system (e.g., Ubuntu)."
|
|||
|
# 安装 apt 包管理器(如果尚未安装)
|
|||
|
sudo apt-get update
|
|||
|
sudo apt-get install -y apt
|
|||
|
# 使用 apt 安装依赖
|
|||
|
sudo apt-get install -y libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev
|
|||
|
# 判断是否是基于 Red Hat 的系统(如 CentOS)
|
|||
|
elif [ -f /etc/redhat-release ]; then
|
|||
|
echo "Detected Red Hat-based system (e.g., CentOS)."
|
|||
|
# 安装 yum 包管理器(CentOS 7)或 dnf 包管理器(CentOS 8 及以上)
|
|||
|
if command -v yum &> /dev/null; then
|
|||
|
sudo yum install -y yum
|
|||
|
sudo yum install -y libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev
|
|||
|
elif command -v dnf &> /dev/null; then
|
|||
|
sudo dnf install -y dnf
|
|||
|
sudo dnf install -y libfftw3-dev libnetcdf-dev gmt libgmt-dev libgsl-dev libncurses-dev
|
|||
|
else
|
|||
|
echo "Package manager not found. Please check your system configuration."
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
else
|
|||
|
echo "Unsupported Linux distribution."
|
|||
|
exit 1
|
|||
|
fi
|
|||
|
;;
|
|||
|
Darwin)
|
|||
|
echo "Detected macOS."
|
|||
|
# 安装 Homebrew(如果尚未安装)
|
|||
|
if ! command -v brew &> /dev/null; then
|
|||
|
echo "Installing Homebrew..."
|
|||
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|||
|
fi
|
|||
|
# 使用 Homebrew 安装 gcc
|
|||
|
brew install fftw3 netcdf gmt gsl ncurses
|
|||
|
;;
|
|||
|
*)
|
|||
|
echo "Unsupported operating system: $OS_TYPE"
|
|||
|
exit 1
|
|||
|
;;
|
|||
|
esac
|
|||
|
|
|||
|
# 0. 拷贝cmake配置文件
|
|||
|
sudo mkdir /usr/local/lib/cmake && \
|
|||
|
sudo cp -r dep/cmake /usr/local/lib/cmake
|
|||
|
|
|||
|
# 1. 编译安装EEMD
|
|||
|
sudo mkdir /opt/stow/libeemd && \
|
|||
|
mkdir dep/libeemd/build && \
|
|||
|
cd dep/libeemd/build && \
|
|||
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/stow/libeemd && \
|
|||
|
make && make install
|
|||
|
|
|||
|
sudo stow -d /opt/stow -t /usr/local -S libeemd
|
|||
|
|
|||
|
# 2. 编译安装netcdfcxx_legacy
|
|||
|
sudo mkdir /opt/stow/netcdfcpp && \
|
|||
|
mkdir dep/netcdfcxx_legacy/build && \
|
|||
|
cd dep/netcdfcxx_legacy/build && \
|
|||
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/stow/netcdfcpp && \
|
|||
|
make && make install
|
|||
|
|
|||
|
sudo stow -d /opt/stow -t /usr/local -S netcdfcpp
|
|||
|
|
|||
|
# 3. 拷贝partow模版文件
|
|||
|
sudo cp -r dep/partow /opt/stow
|
|||
|
|
|||
|
# 4. 编译安装gctl
|
|||
|
sudo mkdir /opt/stow/gctl && \
|
|||
|
mkdir build && \
|
|||
|
cd build && \
|
|||
|
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/stow/gctl && \
|
|||
|
make && make install
|
|||
|
|
|||
|
sudo stow -d /opt/stow -t /usr/local -S gctl
|