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 執行哪些命令。