解决linux下部署科大讯飞时的版本过低问题

在将项目部

署到阿里云服务器之后,需要将科大讯飞SDK下的libmsc64.so依赖库文件上传至/usr/java/jdk1.8.0_121/jre/lib/amd64路径下

在Windows下(Eclipse里直接运行Tomcat)调用语音转文字接口没问题,但部署到阿里云Linux上后,只要调用语音转文字接口就会报错,报错代码如下:

一开始从上图红框中的地方找原因,走了很多弯路,后面看下面的错误代码,终于找到方向如下图

然后开始注意到GLIBC_2.15 not found,阅读该博客后http://bbs.xfyun.cn/forum.php?mod=viewthread&tid=9864  基本锁定是由于系统glibc版本低于2.15导致

博客重点内容如下:

Q1:集成sdk后运行,出现java.lang.Unsatisfie.lang.UnsatisfiedLinkError no injava.library.path,或报20021的错误?

A:Java SDK 使用了 JNI 形式,在初始化 SDK 时,SDK 将加载共享库(Windows下为msc32.dll或msc64.dll文件,Linux下libmsc32.so或libmsc64.so文件),报错是因为系统找不到共享库。

一般来说,在 Windows 下,系统加载共享库时的优先级将按以下的顺序:

1,应用的当前运行目录;

2,由系统环境参数 Path 指定的目录;

3,System32 目录;

而在Linux下,系统加载共享库时的优先级将按以下顺序:

1,LD_LIBRARY_PATH指定的目录;

2,/lib/ 和 /lib64/ 目录;

根据上面:

在Windows下,把 dll 文件,放在应用的当前运行目录(一般为应用所在的目录),或在 Path 把 dll 所在目录加入此环境参数中,或者把dll复制到 System32 目录(不建议);

在Linux下,则把 .so 所在目录,通过 export 加入 LD_LIBRARY_PATH 中(在Terminal或在“.bashrc”等启动时会加载的脚本中),或把 .so 文件复制到 lib 文件夹中(不建议);(另外,确保linux的glibc版本为2.11以上;可以执行命令 ldd  libmsc32.so <如64位系统,则命令为 ldd libmsc64.so>,如果有执行结果有`GLIBC_2.11‘ not found,则需要把 glibc 版本升级到2.11版)

升级Linux系统glibc版本到2.15(参考 http://blog.csdn.net/officercat/article/details/39520227

1  各个版本的glibc可以从http://ftp.gnu.org/gnu/glibc/找,包括其插件glibc-port

2  tar -xvf  glibc-2.15.tar.gz

3  tar -xvf  glibc-ports-2.15.tar.gz

4  mv glibc-ports-2.15 glibc-2.15/ports

5  mkdir glibc-build-2.15

6  cd glibc-build-2.15

7  ../glibc-2.15/configure  --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin

8  make (此过程时间比较长)

9  make install (此过程时间比较长)

10 $ strings /lib64/libc.so.6 | grep GLIBC 成功后查看

时间: 2024-10-25 20:58:51

解决linux下部署科大讯飞时的版本过低问题的相关文章

如何解决linux下apache启动时httpd: apr_sockaddr_info_get() failed for 报错

今天在家里的RHLE5.5上安装apache的时候,先用user1用户./configure命令配置,然后才用root用户make && make install,结果apache起来的时候就报如下错误: httpd: apr_sockaddr_info_get() failed for bogon httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 fo

linux下部署tomcat指定JDK版本编译并运行javaWEB应用

1.linux系统环境信息 [[email protected] ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 5.4 (Tikanga) [[email protected] home]# uname -a Linux softtest 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:48 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux 2.t

解决linux下创建用户时出现 Creating mailbox file: 文件已存在

原来linux下添加用户后,会在系统里自动加一个邮箱(系统邮箱),路径是:/var/spool/mail/用户名.      可以直接用命令#rm -rf /var/spool/mail/用户名      这样就可以再次添加同一名字的用户. 解决You have new mail in /var/spool/mail/root提示 终端远程登陆后经常提示You have new mail in /var/spool/mail/root 这个提示是LINUX会定时查看LINUX各种状态做汇总,每经

linux下安装Oracle时交换空间不足的解决方法

摘:linux下安装Oracle时交换空间不足的解决方法 linux上安装Oracle时交换空间不足的解决办法 增加交换空间有两种方法: 严格的说,在系统安装完后只有一种方法可以增加swap,那就是本文的第二种方法, 至于第一种方法应该是安装系统时设置交换区. 1.使用分区: 在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount. 这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统. 2.使用swapfile:(或者是整个空闲分区) 新建临时swap

解决Linux下Tomcat日志目录下的catalina.log日志文件过大的问题

本文摘自:(http://blog.csdn.net/stevencn76/article/details/6246162) 分类: Java技术专区2011-03-13 12:25 5017人阅读 评论(1) 收藏 举报 tomcatlinux工具任务web 由于Tomcat在默认情况下会将没有经过配置的web应用所产生的日志输出已经其本身的日志内容都输出到这个文件中,那么随着时间的推移,这个文件的尺寸将会越来越大,当需要检查日志内容时间会导致文件难以打开,而且同时tomcat依旧在不断的向文

Linux下部署Java应用程序

Linux软件安装的特点: 1.Linux中没有注册表的概念,因此要想删除某个软件直接删除软件目录就可以了. 2.软件的安装有些需要Linux软件包的支持,在Linux中使用rpm命令管理软件包. 3.Linux中软件安装的过程很迅速,并且软件的运行速度也很快. 4.Linux中权限管理很严格,因此安装时需要对安装介质进行权限配置. 体验Linux下的Java开发 编译器->字节码->(虚拟机)本地机器码->执行 Linux系统与Windows系统最大的区别: Windows路径分隔是&

Linux下部署Symfoy2对app/cache和app/logs目录的权限设置

在linux下部署完Symfony2,可能在访问的时候会报app/logs或者app/cache目录没有写权限的错误.在linux下,如果我们在命令行登陆的用户和web应用服务器(apache.nginx等)的用户不一样的时候, 可以使用下面四个方法来解决这个问题. 1.在支持chmod +a 的系统下使用ACL 很多版本的linux系统都支持chmod +a命令,所以我们优先使用这个命令.找出web应用服务器的用户名赋值到变量HTTPDUSER上. 1 $ rm -rf app/cache/*

Linux 下部署Django项目

Linux 下部署Django项目 说明:本文所使用的环境为CentOS 6+Python2.7+Django1.11 安装Django.Nginx和uWSGI 1.确定已经安装了2.7版本的Python: 2.安装python-devel yum install python-devel 3.安装uwsgi pip install uwsgi 测试uwsgi是否能正常工作 1.新建一个index.py: # index.py def application(env, start_respons

Linux下部署docker记录(1)-Volume使用

之前部署了Linux下部署docker记录(0)-基础环境安装,接下来看看Docker Volume的使用. Docker volume使用1)一个数据卷是一个特别指定的目录,该目录利用容器的UFS文件系统可以为容器提供一些稳定的特性或者数据共享.数据卷可以在多个容器之间共享.2)创建数据卷,只要在docker run命令后面跟上-v参数即可创建一个数据卷,当然你也可以跟多个-v参数来创建多个数据卷,当创建好带有数据卷的容器后,你就可以在其他容器中通过--volumes-froms参数来挂载该数