EMu软件依赖libgsm,而ubuntu 16.04不再支持libgsl0ldbl,导致从网上下载的已经编译好的软件运行失败。
问题描述
如下图所示,下载编译好的EMu版本,然后运行,结果产生了找不到 libgsl.so.0 的错误。
解决问题
既然缺少库,那么就需要安装。libgsl.so.0需要通过安装libgsl0ldbl而得到,但是从ubuntu 16.04 开始已经停止对该软件的支持,所以,需要运行以下命令安装系统支持的版本
sudo apt-get install libgsl2 libgsl-dbg libgsl-dev
下载EMu源码
参照下图下载软件源码,解压后进入 EMu-1.5.2 文件夹,根据图示目录列表,新建 build 文件夹,用于存放随后编译生成的可执行文件。图中的src 文件夹存放的是软件源码。
准备编译源码
进入上图所示的src文件夹,打开 Makefile 文件,然后修改图示红色箭头处
第一个红色箭头 g++ 程序,在此注释(#) -mp-4.7
第二个红色箭头 gsl 库文件路径,如果与图中不同,请搜索本地磁盘,并改为你本地文件路径
第三个红色箭头 注释(#) -fopenmp
完成编译
运行
make
开始编译,完成后,可以在build文件夹中找到编译好的可执行软件,如下图所示
注意:
正确配置Makefile
未安装openmp则注释掉 -fopenmp
正确设置 gsl 库文件的路径