远程Linux创建Matlab算法的jar包

一、通过X11远程连接Linux图形界面
1、安装xdm(没安装时/etc/X11目录下没有xdm文件夹)
 yum -y install xdm


2、编辑Xaccess文件
 vi /etc/X11/xdm/Xaccess
 
将下面行前面的“#”号去掉
#* #any host can get a login window
改为
* #any host can get a login window


3、编辑custom.conf文件
 vi /etc/gdm/custom.conf
 
添加如下信息:
[security]
AllowRemoteRoot=yes
DisallowTCP=false

[xdmcp]
Enable=true
Port=177


4、编辑inittab文件
 vi /etc/inittab
 
修改默认启动级别为5
id:5:initdefault:


5、修改文件访问权限
 chmod 444 /etc/X11/xdm/Xservers 
 chmod 755 /etc/X11/xdm/Xsetup_0 

 
6、修改xdm-config文件
 vi /etc/X11/xdm/xdm-config
 
在最后一行:DisplayManager.requestPort:    0    
前面加!注释掉此行

7、允许177端口
 iptables -A INPUT -p udp -s 0/0 -d 0/0 --dport 177 -j ACCEPT
 
 远程连接后可以查询是否连接:netstat -antup | grep 177   或   netstat -tulnp | grep 177


8、重启系统后就可以使用XManager远程连接图形界面了
 shutdown -r now

 

二、Linux下安装Matlab2016
1、下载安装镜像
Matlab下载:
https://www.mathworks.cn/downloads/web_downloads
https://www.mathworks.cn/downloads/web_downloads/select_release (需注册账号登录)
MATLAB Runtime下载:
https://ww2.mathworks.cn/products/compiler/matlab-runtime.html?s_tid=srchtitle

2、获取网卡物理地址,登录MATLAB官网,在我的软件的许可证下的安装与激活tab页,生成安装密钥和许可证文件
 ip addr | grep ether
 /sbin/ifconfig eth0
 /sbin/ifconfig eth1
 
3、拷贝安装镜像文件到服务器
 cd /
 sudo mkdir tools
 
4、挂载安装镜像
 cd tools
 sudo mkdir matlab
 sudo mount -t auto -o loop /tools/R2016b_glnxa64_dvd1.iso /tools/matlab/
 
5、开始安装
 sudo /tools/matlab/install
 
6、如果需要挂载第二个镜像
 sudo umount /tools/matlab/ (安装完再次执行卸载)
 sudo mount -t auto -o loop /tools/R2016b_glnxa64_dvd2.iso /tools/matlab/
 
7、启动Matlab
 cd /usr/local/MATLAB/R2016b/bin
 sudo ./matlab

8、添加Matlab桌面图标
 sudo vim /usr/share/applications/Matlab2016b.desktop

[Desktop Entry]
Categories=Development;Matlab;
Comment[zh_CN]=Matlab: The Language of Technical Computing
Comment=Matlab: The Language of Technical Computing
Exec=sh /usr/local/MATLAB/R2016b/bin/matlab -desktop
GenericName[zh_CN]=Matlab2016b
GenericName=Matlab2016b
Icon=/usr/local/MATLAB/R2016b/toolbox/sl3d/mainpage/matlab_logo.gif
Mimetype=
Name[zh_CN]=MATLAB
Name=MATLAB
Path=
StartupNotify=true
Terminal=false
Type=Application
 
9、使用APPS中的LibraryCompiler编译算法的jar包(deploytool)
编译时出错:
sh: jar: command not found
Error: An error occurred while shelling out to jar (error code = 127).
Unable to build executable. For more information, pass the -v option to mcc.
 

 
三、安装对应版本JDK
1、在Matlab中输入命令查看Matlab对应的JDK版本
>> version -java
ans = Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) 64-Bit Server VM mixed mode

2、查看Linux已安装JDK版本,发现Linux实际安装的JDK版本和Matlab对应版本不一致,而且getenv也获取不到环境变量
# java -version
java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)

在Matlab中输入命令查看JDK安装路径
>> getenv JAVA_HOME
ans = 0×0 empty char array
  
3、下载1.7版本的JDK
Oracle Java Archive:
https://www.oracle.com/technetwork/java/archive-139210.html
Java SE 7 Archive Downloads:
https://www.oracle.com/technetwork/java/javase/downloads/java-archive-downloads-javase7-521261.html

4、安装1.7版本的JDK
# tar -zxvf jdk-7u80-linux-x64.tar.gz

5、配置环境变量(vi /etc/profile)
export JAVA_HOME=/tools/jdk1.7.0_80
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${JRE_HOME}/lib
export JAVA_PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin
export PATH=${JAVA_PATH}:$PATH

6、Matlab重新编译算法Jar包,还是同样的错误

7、最后直接在Matlab中设置JAVA_HOME终于成功将算法编译成jar包
>> setenv('JAVA_HOME','/tools/jdk1.7.0_80')
>> getenv('JAVA_HOME')
ans = /tools/jdk1.7.0_80

 

四、不能加载库的解决办法
1、运行Matlab生成的jar包后,提示如下错误:
Can't reload '/usr/local/MATLAB/MATLAB_Runtime/v91/bin/glnxa64/libmwhgbuiltins.so'

2、使用ldd命令查询原因,发现有三个库文件找不到
[root~]# ldd /usr/local/MATLAB/MATLAB_Runtime/v91/bin/glnxa64/libmwhgbuiltins.so
        libXext.so.6 => not found
        libXt.so.6 => not found
        libX11.so.6 => not found

3、在正常Linux系统查找库文件,拷贝到目标机器并加载即可。也可以按照步骤8直接安装对应的包。
[root~]# find / -name libXt.so.6
/usr/lib64/libXt.so.6
[root~]# ll /usr/lib64/ | grep libXt.so.6
lrwxrwxrwx.  1 root root       14 Jan 16  2018 libXt.so.6 -> libXt.so.6.0.0
-rwxr-xr-x.  1 root root   412960 Apr 24  2014 libXt.so.6.0.0

4、将找到库文件(libXt.so.6.0.0)拷贝到目标机器某个目录下(如/usr/libex/)

5、查看目标机器库加载配置(应该是包含ld.so.conf.d目录下所有conf文件)
[root@~]# cat /etc/ld.so.conf
include ld.so.conf.d/*.conf

5、在加载配置目录下创建自定义加载文件(先查看有哪些配置文件,有的系统可能没有额外的配置文件)
[root ~]# cd /etc/ld.so.conf.d/
[root ld.so.conf.d]# ll
total 2
-rw-r--r--. 1 root root  17 Feb 26  2016 mysql-x86_64.conf
-rw-r--r--. 1 root root  22 Jul 18  2011 qt-x86_64.conf
[root ld.so.conf.d]# cd /
[root ~]vi /etc/ld.so.conf.d/libex.conf
内容设置为刚才存放so文件的目录:
/usr/libex

6、载入配置(载入配置后会自动创建连接)
[root ~]/sbin/ldconfig

7、如果又出现新的库找不到,重复步骤3~6,直到能够找到所有库文件即可。

8、安装包对应的程序包。
[root ~]#yum install libXp -y
[root ~]#yum install libXt -y
[root ~]#yum install libXtst -y

五、缺少库文件解决办法
1、缺少包文件
# java -cp .:./javabuilder.jar:./jxl.jar:./erp.jar MatlabTest /pkg/pro/xls/
Exception in thread "main" java.lang.LinkageError: libXext.so.6: cannot open shared object file: No such file or directory

2、安装包文件
# yum -y install libXext.*
/usr/lib64/python2.6/site-packages/pycurl.so: undefined symbol: CRYPTO_set_locking_callback

3、无法安装是因为库文件有问题
#  ldd  /usr/lib64/python2.6/site-packages/pycurl.so
libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007eff3c489000) (问题所在,要指向/usr/lib64/libcurl.so.4.1.1这个文件才行)

4、重新链接库文件
# cd /usr/lib64
# rm libcurl.so.4
# ln -s /usr/lib64/libcurl.so.4.1.1 /usr/lib64/libcurl.so.4

5、再次安装后发现又缺少其他库文件
# yum -y install libXext.*
# java -cp .:./javabuilder.jar:./jxl.jar:./erp.jar MatlabTest /pkg/pro/xls/
Exception in thread "main" java.lang.LinkageError: libXt.so.6: cannot open shared object file: No such file or directory

6、重新链接上面库文件后安装对应的包
#yum install libXp -y
#yum install libXt -y
#yum install libXtst -y
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值