SPM/在 SunOS 上安装
SPM 维基教科书已迁移至 https://www.fil.ion.ucl.ac.uk/spm/docs/ |
由于 MathWorks 不再支持这些平台,因此没有计划为 Solaris SPARC(32 位或 64 位)提供 SPM8 或 SPM12 MEX 文件,请参阅 MATLAB 路线图。
最新更新中提供了适用于 Solaris SPARC 的预编译 MEX 文件(*.mexsol 和 *.mexs64)。
在您的主目录中下载 spm5.zip,然后在终端中键入以下内容:
cd /home/login unzip spm5.zip
启动 MATLAB 并将 SPM 添加到您的路径中,可以使用“文件 > 设置路径 > 添加文件夹...”或在 MATLAB 的工作区中键入以下内容:
addpath /home/login/spm5
在终端中,从 SPM5 安装目录的“src”文件夹中键入以下内容:
cd /home/login/spm5/src make distclean make && make install
以下是关于如何在运行 Solaris 9 的 SUN 上安装了 gcc 编译器的机器上,将 SPM2 编译为与 MATLAB 7(服务包 1)完美运行的说明。与 SPM2 附带的标准 Makefile 不完全一致;部分原因是它期望您使用 Solaris 附带的 cc 编译器。
将“gccopts.sh”文件从 $MATLAB_HOME_DIR/bin 复制到 SPM2 目录,并将其命名为“mexopts.sh”。这使您可以轻松地输入仅用于编译 SPM2 的 mex 选项。在下面,您将更改 Makefile,告诉它使用此 mexopts.sh 文件而不是默认文件。确保此文件设置诸如 CC='gcc' 之类的变量。您可能还需要编辑 MLIBS 行为:
MLIBS="-L/opt/sfw/gcc-3/lib -L/opt/sfw/gcc-3/lib/gcc-lib -L$TMW_ROOT/bin/$Arch -lg2c -lmx -lmex -lmat -lm"
(引号之间的所有内容应在一行上) 注意,搜索库的额外目录和“-lg2c”选项是新增的。为确保安全,还可以尝试添加:
EXTRA_LIBDIR="/opt/sfw/gcc-3/lib"
更改优化标志也可以提高性能。对于 UltraSPARCIII cpu,您可以尝试以下操作:
COPTIMFLAGS='-O3 -funroll-loops -mcpu=v9 -DNDEBUG -DBIGENDIAN'
正确设置链接器需要一些搜索;尝试在 mexopts.sh 文件中添加以下内容:
LDFLAGS="-shared -Wl,-M,$TMW_ROOT/extern/lib/$Arch/$MAPFILE,-R,$GCC_LIBDIR,-R,$EXTRA_LIBDIR"
尝试将 Makefile 从以下内容:
SunOS: make all SUF=mexsol CC="cc -xO5" MEX="mex COPTIMFLAGS=-xO5"
更改为以下内容:
SunOS: make all SUF=mexsol CC="cc -xO5 -DBIGENDIAN" MEX="mex COPTIMFLAGS=-xO5 -DBIGENDIAN" SunOS.gcc: # Assumes that gccopts.sh has been copied to mexopts.sh in the current directory make all SUF=mexsol CC="gcc -O3 -funroll-loops -DBIGENDIAN -fPIC"\ MEX="mex -f ./mexopts.sh"
同样,您也可以尝试在 UltraSPARCIII cpu 的 CC 变量中添加“-mcpu=v9”作为选项。您可能还需要编辑以下行:
all: verb.$(SUF) $(SPMMEX)
更改为以下内容:
all: verb.$(SUF) archive $(SPMMEX)
因为这会重新编译 spm_vol_utils.a 存档,否则该存档可能与您新编译的 mexsol 例程不兼容。
然后使用以下命令编译:
make SunOS.gcc
您可能需要执行以下操作:
make very_clean
才能使其正常工作。如果不执行此操作,在链接时可能会出现大量错误。
为了找出问题所在,您可以将上面的行从以下内容:
MEX="mex -f ./mexopts.sh"
更改为以下内容:
MEX="mex -n -f ./mexopts.sh"
这不会编译 SPM 例程,但会告诉您 mex 将对 gcc 执行哪些命令。