JASMIN Installation

# 所用平台

系统:Fedora 33 Workstation Edition 64 位
GCC 10.3.1 (Red Hat)

此系统自带 GCC 版本过高,需安装低版本 GCC 4.8.5。

# GCC 4.8.5

下载地址

# 依赖安装

在源码文件夹中 ./contrib/download_prerequisites 可下载好 mpfr-2.4.2,mpc-0.8.1,gmp-4.3.2,此外还需下载 isl-0.11.1,cloog-0.18.0 并解压到源码文件夹。

cd gcc-4.8.5
wget https://gcc.gnu.org/pub/gcc/infrastructure/isl-0.11.1.tar.bz2
wget https://gcc.gnu.org/pub/gcc/infrastructure/cloog-0.18.1.tar.gz
tar -jxvf isl-0.11.1.tar.bz2
tar -zxvf cloog-0.18.1.tar.gz
mv isl-0.11.1 isl
mv cloog-0.18.1 cloog

# 正常安装

为了防止出错在源码文件夹外编译安装。

cd ..
mkdir gccbuild
cd gccbuild
../gcc-4.8.5/configure --prefix=/usr/local/gcc-4.8.5
make
make check
sudo make install

参考

# 错误处理

用高版本 GCC 编译会出现很多不兼容问题。

# stubs-32.h

报错: Error "gnu/stubs-32.h: No such file or directory" while compiling Nachos source code
处理: sudo yum install glibc-devel.i686 libstdc++-devel.i686
不要加 --disable-multilib 编译选项绕过,会导致后面的软件编译失败。

参考

# Cannot find -lstdc++

处理: yum install libstdc++-static glibc-static
参考

# struct ucontext

报错: dereferencing pointer to incomplete type 'struct ucontext'
处理:找到错误源码文件,将 struct ucontext * uc_ = context->cfa 修改为 struct ucontext_t * uc_ = context->cfa

参考

# asan_linux.cc

处理:在 asan_linux.cc 中添加头文件 #include <signal.h>

参考

# libc_name_p

报错: cfns.gperf:101:1: error: ‘gnu_inline’ attribute present on ‘libc_name_p’
处理:修改 cfns.h 中的声明和定义

#ifdef __GNUC__
__inline
#endif
const char * libc_name_p (const char *, unsigned int);

#ifdef __GNUC__
#ifdef __GNUC_STDC_INLINE__
__attribute__ ((__gnu_inline__))
#else
__inline
#endif
#endif
const char * libc_name_p (const char *, unsigned int);

参考

# GDB 9.2

由于使用旧版 gcc 时系统 gdb 不可用,需重新编译安装旧版 gdb。

下载地址

sudo install texinfo !编译gdb手册用
tar zxvf  gdb-9.2.tar.gz
cd gdb-9.2
mkdir build
cd build
../configure --disable-host-shared --prefix=/usr/local/gdb-9.2
make
sudo make install

# Netcdf 4.4

下载地址
root 登录,启用 GCC 4.8.5 后 →参考本页环境变量配置

# zlib 1.2.8

tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/usr/local/netcdf
make && make check
make install

# hdf5 1.8.13

tar -zxvf hdf5-1.8.13.tar.gz
cd hdf5-1.8.13
./configure --prefix=/usr/local/netcdf --with-zlib=/usr/local/netcdf/
make && make check
make install

# netcdf 4.3.2

tar -zxvf netcdf-4.3.2.tar.gz
cd netcdf-4.3.2
CPPFLAGS=-I/usr/local/netcdf/include LDFLAGS=-L/usr/local/netcdf/lib ./configure --prefix=/usr/local/netcdf --disable-dap
make && make check
make install

# netcdf-fortran 4.4.0

export LD_LIBRARY_PATH=/usr/local/netcdf/lib:$LD_LIBRARY_PATH
tar -zxvf netcdf-fortran-4.4.0.tar.gz
cd netcdf-fortran-4.4.0
CPPFLAGS=-I/usr/local/netcdf/include LDFLAGS=-L/usr/local/netcdf/lib ./configure --prefix=/usr/local/netcdf
make && make check
make install
make check

第一次 check 可能因找不到库报错,install 后 check 通过。

参考

# JASMIN 4.5.2

官网:中物院高性能数值模拟软件中心 JASMIN,可申请安装包。
获得安装包后,执行 sh jasmin4-4.5.2-Linux-x86_64.sh ,按提示操作。
建议以版本名作为安装文件夹,如 /home/ning/jasmin4-4.5.2 ,不选择自动更新环境变量,在下文中统一设置。
在使用 JASMIN 时需更新项目 CMakeLists.txt 的路径,可参考 OMARE 学习使用(一)

# 环境变量配置

.workenv
export PATH="/usr/local/gcc-4.8.5/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/gcc-4.8.5/lib64:$LD_LIBRARY_PATH
export PATH="/usr/local/gdb-9.2/bin:$PATH"
export LD_LIBRARY_PATH=/usr/local/gdb-9.2/lib:$LD_LIBRARY_PATH
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
CPPFLAGS='-I/usr/local/netcdf/include'
export LDFLAGS='-L/usr/local/netcdf/lib'
export PATH="/home/ning/jasmin4-4.5.2/bin:$PATH"
echo 'Env var loaded.'

使用 Jasmin 前执行 source .workenv

若在 .bashrc 中设置 gcc 变量会导致系统启动失败无法进入登录界面( F2 可看到系统加载失败信息),此时需要用 Linux 系统安装 U 盘启动新系统(不安装!可在 Fedora 官网下载 U 盘写入工具)后挂载本机磁盘文件系统,修改 GCC-4.8.5 文件夹路径,删除 .bashrc 中新增的路径及 /etc/ld.so.conf 新增的路径,这时可以进入登录界面。移走 /etc/ld.so.cache 重置 ldconfig

若反复卡死在登录界面可按 ctrl+alt+F2 命令行登入,删除追加的环境变量。在 .bashrc 中设置 Netcdf 的 LD_LIBRARY_PATH 会导致这种情况。

# 其他

# 修改选择系统界面时间(root)

vim /etc/default/grub
grub2-mkconfig -o "$(readlink -e /etc/grub2.conf)"

参考

# samba 文件共享服务 (root)

官方手册: How to create a Samba share

ifconfig 查看 samba 服务 ip
比如 180.170.100.21
在 mac 访达中访问服务器 smb://180.170.100.21
在 Windows 运行中访问服务器 \\180.170.100.21

其他参考: Samba 服务器超详细安装、配置

  • 服务管理 service smb stop/start/restart
  • 状态查看 sudo smbstatus
更新于 阅读次数