MATLAB2014b怎么在Linux14.04下ax88772b驱动编译不过mex文件

Matlab_R2014b linux版 安装笔记 - 简书
Matlab_R2014b linux版 安装笔记
Matlab_R2014b 安装备忘
警告! 凡是涉及 sudo rm 的命令都是及其危险的
首先将iso文件(只读)挂载在/mnt/tmp下
sudo mkdir -p /mnt/tmp
sudo mount -t iso9660 -o loop matlab_R2014b.iso
然后将iso中文件整体复制到另外 可读写的 本地目录/mnt/matlab下
sudo mkdir -p /mnt/matlab
cd /mnt/tmp
sudo cp -R *
/mnt/matlab
sudo umount /mnt/tmp
假设破解文件 install.jar license.lic 全部在 ~/crack/ 目录下首先用crack中的install.jar 覆盖原生安装包的install.jar
sudo cp ~/crack/install.jar
/mnt/matlab/java/jar/install.jar
#询问是否覆盖
cd /mnt/matlab
选择 手动安装不连接互联网因为某些原因 最好安装在/opt下 这样即使重做系统了 拷贝出来照样能用
sudo mkdir -p /opt/MATLAB/R2014b
选择安装路径 就是 /opt/MATLAB/R2014b输入key:
选择安装工具箱 可全部安装选择没有互联网使用文件激活选中crack目录下的 license.lic许可证文件
暂时不要开matlab 继续替换crack目录下给出的 libmwservices.so文件并且对原生的 libmwservices.so改名处理 或直接删除注意下方第三行cp命令 最后的 点号
cd /opt/MATLAB/R2014b/bin/glnxa64
sudo mv libmwservices.so libmwservices.so.old
~/crack/libmwservices.so
#注意libmwservices.so
网上我找到几个 其中多个无效 但是有一个有效
#当终端运行matlab报错如 error while loading shared libraries: libmwservices.so: ...
#那么libmwservices.so是无效的
删除之前复制的安装文件
sudo rm -r matlab
如果想从终端启动matlab 则要加入相应路径到环境变量PATH
vim .bashrc
#或者 vim .zshrc ( 若在用zsh)
然后加入下面一句
PATH="$PATH:/opt/MATLAB/R2014b/bin"
#为了用的舒服点 再加上下面一句
alias matlab='nohup matlab
-desktop & '
#注意需要带-desktop参数
不然可能闪退
现在可以从终端中启动matlab直接键入matlab
如果想从启动器launcher条上 或桌面图标快捷方式启动matlab这个比较麻烦
如果网上找到的matlab.desktop脚本的仍然不能生效的话用下面的方法
我在用Numix-Circle做图标主题 而这个图标主题中已经有matlab的图标所以下方脚本中我并没有设定icon路径
首先 去 /usr/share/applications中随便找一个系统图标
可以拖动到桌面上比如Gvim
如果桌面此时出现了gvim图标 而不是"复制时出错" 那么就可以了然后在终端中用vim或其他文本编辑器打开gvim.desktop文件
cd ~/Desktop
mv gvim.desktop
matlab.desktop
vim matlab.desktop
将里面的代码全部删掉
然后写入下面的代码
[Desktop Entry]
Type=Application
Encoding=UTF-8
Name=Matlab2014b
Comment=Matlab:The Tool of Technical Computing
Exec=/opt/MATLAB/R2014b/bin/matlab
Icon=matlab
Categories=DM
Name[zh_CN]=Matlab2014b
注意Exec行的matlab执行脚本位置
也要有-desktop参数
不然闪退至于icon 我的图标主题自带 所以不用指定路径但换掉主题后图标图案可能"一片空白"
所以也可以选择用原生图标位置:
Icon=/opt/MATLAB/R2014b/toolbox/sl3d/mainpage/matlab_logo.gif
保存然后回到桌面就已经有matlab图标了 双击开启并可以将图标拖动到屏幕左边的启动器launcher条上
关于matlab的字体问题在Linux下 尤其是在AwesomeWM中 matlab的字体锯齿化显著 难看这主要是开源软件openjdk的问题稍稍解决的方法有二:a. 进入Matlab,打开HOME面板上的Preferences,打开Fonts设置页,在右边最下方的复选框 选中 Use antialising to smooth desktop fonts此外还可以自由选择字体 如在Fonts面板上选择(前提是已经安装了该字体)
BitStream Vera Sans Mono Plain 11
%有效区分0和O以及o
b. 经过a过程的处理 字体表现良好
但仍然有部分字体显示锯齿所以对默认的openjdk-使用非版权保护的丑陋字体 打补丁
# Install both infinality and fontfix'ed JDK.
sudo add-apt-repository ppa:no1wantdthisname/ppa
sudo add-apt-repository ppa:no1wantdthisname/openjdk-fontfix
sudo apt-get update
sudo apt-get install fontconfig-infinality openjdk-7-jdk
# Apply a font style that looks good.
sudo /etc/fonts/infinality/infctl.sh setstyle linux
# And reboot the system.
sudo reboot
Ubuntu14.04LTS 用的是openjdk7 所以这里安装的是对应版本7的补丁
备注解包安装后大约占11G空间
matlab2014bsize.png
启动matlab
matlab2ee.jpg
日凿一窍,七日而死。学习与示例:
1. MEX的编写格式
写MEX程序其实就是写一个DLL程序,所以你可以使用C,C++,Fortran等多种编程语言来写。
编写MEX程序的编辑器可以使用MATLAB的代码编辑器,也可使用自己的C++编辑器,如VS2008等。
用MATLAB的编辑器的好处是,MEX函数会加粗高亮显示,这给程序编写带来便利,可惜无法动态调试。如用VC即可编译也可调试,比较方便。mex的编译结果实际上就是一个带输出函数mexFunction 的dll文件,所以会用VC编写和调试dll,就会用VC编写和调试MEX程序。
a. MEX文件格式
#include "mex.h"
void mexFunction( int nlhs, mxArray *plhs[],&&&&&&&&&&&&&&&&& int nrhs, const mxArray *prhs[] ){
四个参数分别用来输出和输入数据:&nlhs 输出参数个数,plhs 输出参数指针&(nrhs和prhs是输入参数相关的)。
注意: 我们对输出和输入参数的操作都是通过指针的方式进行的。(这点很容易理解,因为我们的计算结果是需要传递给MATLAB的,实际上我们传递的不是数据,而是指针。MATLAB可以通过这些指针,访问内存中的数据。)
b. 操作输入数据
对输入数据进行操作,需要通过MEX函数mxGetPr 得到数据的指针地址。 mxGetM 和 mxGetN 得到矩阵数据的行和列 (返回整数)。对于实矩阵,我们可以定义 double *M; 来对实矩阵数据操作。如:
double *M;
// 指针指向第一个参数的数据地址
M = mxGetPr(prhs[0]);
m = mxGetM(prhs[0]);
n = mxGetN(prhs[0]);
需要注意的是,MATLAB矩阵数据的存储顺序是"从上到下,从左到右"的,这点和Fortran是一样的。也就是说对于MATLAB的m x n的矩阵A。 A(1,1) 就是 *M,A(2,1) 就是 *(M+1) ,以此类推,A(i,j) 就是 *(M + m*(j-1) + (i-1)).
注意: MATLAB的指标从1开始,C的指标从0开始。
c. 操作输出数据
对于输出数据,我们需要首先分配内存空间,有专门的mex函数可以使用,如:
plhs[0] = mxCreateDoubleMatrix(m,n, mxREAL); //生成m x n 的实矩阵。
同输入数据一样,要对输出数据操作,我们也需要一个指向数据的指针变量,如
double *A;
A = mxGetPr(plhs[0]);
下面介绍一下如何使用VS2008编写MEX并编译调试。
2. VC中编写MEX
打开VS2008, 新建项目, 选择MFC DLL.
a. 配置项目属性
打开项目属性配置页,C++ -& 附加包含目录 加入MATLAB安装目录下的 \extern\include 路径。
连接器 -& 附加库目录 加入MATLAB的 \extern\lib\win32\microsoft 路径。
连接器 -& 输入 -& 附加依赖项 输入libmx.lib libeng.lib libmat.lib libmex.lib 这四个lib文件。
b. 编辑输出函数
在项目源文件的. def 中EXPORTS段加入 mexFunction, 如:
EXPORTS&&& ; 此处可以是显式导出&&& mexFunction
c. 编写MEX文件
项目文件中新建一个C++文件 如 mexproc.cpp,里面按前面介绍的格式编写代码即可。
d. VC编译MEX
像编译其他程序那样直接编译即可,成功会生成dll文件。如果编译链接时出错,根据错误提示,检查一下lib和h的路径是否正确,有无缺少lib文件,代码是否有语法错误等。
3. VC中调试MEX
要调试MEX程序就要先编译,再调用她。所以我们需要在MATLAB中调用这个函数,并在VC的MEX程序相应位置处下断点即可。调用的函数名就是dll的主文件名,你可以根据自己的需要改名。我们用mymexfun.dll为例,先在VC的 mexFunction 函数代码段开始处F9下断。然后Ctrl+Alt+P附加MATLAB.exe进程。这样就可以运行命令调试程序了。我们可以在MATLAB的命令行里输入命令:
&&&&&&&&& [输出变量] = mymexfun(输入变量)
(如果命令找不到,检查一下matlab当前路径,和path路径。)
程序一旦被调用,就会被断在我们的断点处。接着你就可以像调试C++程序那样调试MEX程序了。
在MATLAB中编译MEX可以输入:&mex 文件名.cpp
MATLAB上编译MEX时,你可以选择不同的编译器如lc, gcc等。也可以在编译时附加lib和h文件。关于mex的命令详解请参考MATLAB帮助文档。
阅读(...) 评论()Ubuntu 14.04下用GCC及gfortran编写MEX程序(Matlab2012a)_Linux编程_Linux公社-Linux系统门户网站
你好,游客
Ubuntu 14.04下用GCC及gfortran编写MEX程序(Matlab2012a)
来源:oschina.net&
作者:wxwpxh
14.04下用GCC及gfortran编写MEX程序(Matlab2012a)
一、先用apt-get安装一个低版本gcc
& & sudo apt-get install gcc-4.4 g++-4.4 gfortran-4.4
& & matlab2012a可以支持到最高为4.4版本的gcc,而ubuntu14.04默认的gcc版本为4.8
二、修改mexopts.sh
& & sudo vi /opt/MATLAB/R2012a/bin/mexopts.sh
& & 将所有的gcc、g++、gfortran出现分别替换成gcc-4.4、g++-4.4、gfortran-4.4
& & 将CFLAGS='-ansi -D_GNU_SOURCE'改为CFLAGS='-std=c99 -D_GNU_SOURCE'以支持//风格注释
三、启动matlab执行mex -setup命令
&& mex -setup
& & Options files control which compiler to use, the compiler and link command
& & options, and the runtime libraries to link against.
& & Using the 'mex -setup' command selects an options file that is
& & placed in /home/mymotif/.matlab/R2012a and used by default for 'mex'. An options
& & file in the current working directory or specified on the command line
& & overrides the default options file in /home/mymotif/.matlab/R2012a.
& & To override the default options file, use the 'mex -f' command
& & (see 'mex -help' for more information).
The options files available for mex are:
& 1: /opt/local/MATLAB/R2012a/bin/mexopts.sh :
& & & Template Options file for building gcc-4.4 MEX-files
& 0: Exit with no changes
Enter the number of the compiler (0-1):
/opt/local/MATLAB/R2012a/bin/mexopts.sh is being copied to
/home/mymotif/.matlab/R2012a/mexopts.sh
**************************************************************************
& Warning: The MATLAB C and Fortran API has changed to support MATLAB
variables with more than 2^32-1 elements.& In the near future
you will be required to update your code to utilize the new
API. You can find more information about this at:
/help/techdoc/matlab_external/bsflnue-1.html
Building with the -largeArrayDims option enables the new API.
**************************************************************************
(1)进入matlab工作目录,并创建源文件hello1.c内容如下:
#include "mex.h"void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]){& && & i=mxGetScalar(prhs[0]);& & if(i==1)& & & & mexPrintf("hello,world!\n");& & else& & & & mexPrintf("大家好!\n");}&
&& mex hello1.c
&& hello1(0)
&& hello1(1)
hello,world!
mexFunction 输入参数含义
int& nlhs :输出 参数的 个数
mxArray& *& plhs :输出参数的 mxArray数组
int& nrhs :输入 参数的 个数
mxArray& *& prhs: 输入参数的 mxArray 数组
(2)g++例子:
mexcpp.cpp&/*==========================================================&* mexcpp.cpp - example in MATLAB External Interfaces&*&* Illustrates how to use some C++ language features in a MEX-file.&* It makes use of member functions, constructors, destructors, and the&* iostream.&*&* The routine simply defines a class, constructs a simple object,&* and displays the initial values of the internal variables.& It&* then sets the data members of the object based on the input given&* to the MEX-file and displays the changed values.&*&* This file uses the extension .cpp.& Other common C++ extensions such&* as .C, .cc, and .cxx are also supported.&*&* The calling syntax is:&*&*& &
mexcpp( num1, num2 )&*&* Limitations:&* On Windows, this example uses mexPrintf instead cout.& Iostreams &* (such as cout) are not supported with MATLAB with all C++ compilers.&*&* This is a MEX-file for MATLAB.&* Copyright
The MathWorks, Inc.&*&*========================================================*//* $Revision: 1.5.4.4 $ */&#include &iostream&#include &math.h&#include "mex.h"&&extern void _main();&/****************************/class MyData {&public:& void display();& void set_data(double v1, double v2);& MyData(double v1 = 0, double v2 = 0);& ~MyData() { }private:& double val1, val2;};&MyData::MyData(double v1, double v2){& val1 = v1;& val2 = v2;}&void MyData::display(){#ifdef _WIN32& & mexPrintf("Value1 = %g\n", val1);& & mexPrintf("Value2 = %g\n\n", val2);#else& cout && "Value1 = " && val1 && "\n";& cout && "Value2 = " && val2 && "\n\n";#endif}&void MyData::set_data(double v1, double v2) { val1 = v1; val2 = v2; }&/*********************/&staticvoid mexcpp(& & & & double num1,& & & & double num2& & & & ){#ifdef _WIN32& & mexPrintf("\nThe initialized data in object:\n");#else& cout && "\nThe initialized data in object:\n";#endif& MyData *d = new MyD // Create a& MyData object& d-&display();& & & & &
// It should be initialized to& & & & & & & & & & & & & // zeros& d-&set_data(num1,num2); // Set data members to incoming& & & & & & & & & & & & & // values#ifdef _WIN32& mexPrintf("After setting the object's data to your input:\n");#else& cout && "After setting the object's data to your input:\n";#endif& d-&display();& & & & &
// Make sure the set_data() worked& delete(d);& flush(cout);&}&void mexFunction(& & & &
int& & & & & nlhs,& & & &
mxArray& & & *[],& & & &
int& & & & & nrhs,& & & &
const mxArray *prhs[]& & & &
){& double& & & *vin1, *vin2;&& /* Check for proper number of arguments */&& if (nrhs != 2) {& & mexErrMsgIdAndTxt("MATLAB:mexcpp:nargin", & & & & & & "MEXCPP requires two input arguments.");& } else if (nlhs &= 1) {& & mexErrMsgIdAndTxt("MATLAB:mexcpp:nargout",& & & & & & "MEXCPP requires no output argument.");& }&& vin1 = (double *) mxGetPr(prhs[0]);& vin2 = (double *) mxGetPr(prhs[1]);&& mexcpp(*vin1, *vin2);&}&
&& mex mexcpp.cpp
&& mexcpp(2,4)
The initialized data in object:
Value1 = 0
Value2 = 0
After setting the object's data to your input:
Value1 = 2
Value2 = 4
(3)gfortran
# include &fintrf.h&&& & & subroutine mexFunction ( nlhs, plhs, nrhs, prhs )&c*********************************************************************72ccc MEXFUNCTION is a MATLAB/F77 interface for the factorial function.cc& Discussion:cc& & The MATLAB user typesc c& & integer plhs(*), prhs(*)c& & integer nlhs, nrhs&& & & integer nlhs& & & integer nrhs&&& & & mwpointer plhs(nlhs)& & & mwpointer prhs(nrhs)&& & & call mexPrintf('Hello MATLAB World!')&& & & return& & & end
&& mex mexHelloWorld.F
&& mexHelloWorld
Hello MATLAB World!&&
Ubuntu下GCC、G++和gfortran版本切换
Linux升级GCC 4.8.1清晰简明教程(Ubuntu 12.04 64位版为例)&
在 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse 在CentOS 6.4中编译安装GCC 4.8.1 + GDB 7.6.1 + Eclipse
Ubuntu下Vim+GCC+GDB安装及使用&
Ubuntu下两个GCC版本切换&
CentOS6.5升级手动安装GCC4.8.2&
GCC 的详细介绍:GCC 的下载地址:
更多Ubuntu相关信息见 专题页面
本文永久更新链接地址:
相关资讯 & & &
& (05月03日)
& (01月19日)
& (05月12日)
& (03月29日)
& (08/24/:14)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Ubuntu 16.04 LTS下安装MATLAB 2014B的方法教程
作者:Fienly
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Ubuntu 16.04 LTS下安装MATLAB 2014B的方法教程,文中介绍的很详细,相信对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
环境配置说明:
环境:Ubuntu 16.04LTS
软件:MATLAB 2014B
MATLAB 2014B 下载地址(带Crack)如下:
百度云下载:& &链接: /s/1kVJQVlX& 密码: pj9m
本 地 下 载:&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
步骤如下:&
1、直接解压 matlab_R2014b.iso 到 文件夹 matlab_R2014b/
2、用 crack 中的 install.jar 替换 matlab_R2014b/java/jar/ 中的install
注:解压 iso 出来的文件夹很可能是只读的,所以要先给文件夹加权限。
sudo chmod a+w -R matlab_R2014b
3、运行 matlab_R2014b 目录下的 install:
sudo ./install
接下来就是和windows差不多的安装界面了。
默认安装目录是 /usr/local/MATALAB/R2014b/
安装密钥为:-
接下来的证书文件是 Crack 中的 license.lic
接下来正常安装,直到完成。
4、其实之前的激活是不会成功的,因为还没有打补丁。接下来,把 Crack 中的 libmwservices.so 复制到 /usr/local/MATLAB/R2014b/bin/glnxa64/ 中:
sudo mv /usr/local/MATLAB/R2014b/bin/glnxa64/libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64/libmwservices.so.bak // 备份原来的文件
cp crack/libmwservices.so /usr/local/MATLAB/R2014b/bin/glnxa64///把破解补丁拷过来
sudo /usr/local/MATLAB/R2014b/bin/activate_matlab.sh -propertiesFile /usr/local/MATLAB/R2014b/etc/activate.ini //执行破解命令
接下来会再次弹出让你输入证书的窗口,继续找 Crack 中的& license.lic
5、打开MATLAB:
sudo /usr/local/MATLAB/R2014b/bin/matlab
现在打开会有问题报下边的错:
然后 Matlab 运行的时候会卡死,只能强制杀进程:
ps -e | grep MAT
kill &PID&
报错的主要原因是,引起这种错误的原因是Ubuntu15.04及以上版本包含更新版本的libstdc++.so.6,而Matlab使用的是较旧版本(versioin 6.0.17)。当Matlab首先加载
/usr/local/MATLAB/R2016a/sys/os/glnxa64 中的libstdc++.so.6.0.17时,操作系统收到一个Matlab引起的不兼容错误(incompatibility),从而引发启动奔溃(crash)。
解决方法:
可以强制使Matlab加载由操作系统提供的更新版的libstdc++库,通过以下三个操作完成:
// 进入sys/os/glnxa6 目录
cd /usr/local/MATLAB/R2014b/sys/os/glnxa64
// 重命名libstdc++.so.6 共享库为 libstdc++.so.6.bak
mv libstdc++.so.6 libstdc++.so.6.bak
MathWorks官方只对libstdc++.so.6(version 20)做了有限的测试。目前,这个Bug已经在R)中修复。
接下来可以设置环境变量:
sudo vi /etc/profile
在文件尾添加:
export PATH=/usr/local/MATLAB/R2014b/bin:$PATH
保存并退出后使设置生效
source /etc/profile
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具}

我要回帖

更多关于 ax88772b驱动编译不过 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信