![Matlab r2012a学生版中编译spm12的mex文件](https://linux22.com/image/70001/Matlab%20r2012a%E5%AD%A6%E7%94%9F%E7%89%88%E4%B8%AD%E7%BC%96%E8%AF%91spm12%E7%9A%84mex%E6%96%87%E4%BB%B6.png)
2012 年,我购买了 Matlab 学生版(r2012a,32 位),现在已将其安装在我的 Ubuntu 14.04.2 LTS 上。到目前为止,一切正常。
但是,我想安装 SPM12(一种用于分析功能性神经影像(和其他)数据的软件,为此我需要编译某些 mex 文件。根据可访问的安装说明这里,我需要运行一些命令,像这样
cd /home/login/spm12/src
make distclean
make && make install
make external-distclean
make external && make external-install
然而,虽然更改驱动器(显然)并 make distclean 似乎运行没有问题,但在运行 make && make install 时收到一些警告,如下所示:
mex -O -largeArrayDims -c spm_vol_utils.c -DSPM_UNSIGNED_CHAR
Warning: You are using gcc version "4.8.4-2ubuntu1~14.04)". The version
currently supported with MEX is "4.4.6".
For a list of currently supported compilers see:
http://www.mathworks.com/support/compilers/current_release/
mv -f spm_vol_utils.o utils_uchar.mexa64.o
我收到大约 15 个这样的警告(显然是针对要编译的各种 mex 文件)。看来,我需要使用 gcc 版本 4.4.6 来编译这些文件,但在线搜索帮助没有带来任何成功,也没有运行 sudo apt-get install gcc-4.4
关于如何编译这些文件有什么建议吗?
答案1
好的,再搜索五分钟可能会帮助我找到答案。 这里是如何将 gcc 设置为旧版本的说明。
答案2
首先,你确定文件编译失败吗?警告通常就是这样(警告,而不是错误)。
如果您确实想使用 gcc-4.4.x 进行编译,那么仍然可以从 Ubuntu 14.04 存储库中以软件包形式获取它gcc-4.4
(尽管至少在 14.04.2 中它似乎是次要版本 4.4.7 而不是 4.4.6)。您应该能够通过软件中心(或突触包管理器,如果已安装)或从命令行使用来安装它
sudo apt-get install gcc-4.4
除非你对二进制文件进行符号链接以使其成为系统的默认编译器(我会不是推荐),您可能需要修改文件mexopts.sh
以直接指向 gcc-4.4 ie
CC='gcc-4.4'
如果您的文件需要,可以对 g++ 使用相同的过程,g++-4.4
即CXX='g++-4.4'
在mexopts.sh
.