一、通过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