跳轉至內容

SPM/在 SunOS 上安裝

來自華夏公益教科書,自由的教科書,為一個開放的世界
< SPM

SPM8, SPM12

[編輯 | 編輯原始碼]

由於 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 編譯器。

設定 MATLAB7 的編譯

[編輯 | 編輯原始碼]

將“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

[編輯 | 編輯原始碼]

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

華夏公益教科書