Ubuntu 16.04安装的GSL 2.1为何缺少Hermite多项式函数?
解决Ubuntu 16.04官方GSL缺失Hermite多项式功能的问题
我完全懂你的困扰——Ubuntu 16.04官方仓库里的GSL 2.1+dfsg-2确实做了功能裁剪,正好把你需要的gsl_sf_hermite_phys(物理Hermite多项式函数)给去掉了,这就是编译报错的根源。既然你不想手动编译源码,那试试下面这几个纯终端命令就能安装完整功能GSL的方法:
方法1:通过第三方PPA安装完整GSL版本
有维护者为旧版Ubuntu提供了包含完整科学软件的PPA,步骤很简单:
- 添加PPA并更新源列表:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt update - 安装更新后的GSL开发包和运行库:
这个PPA提供的GSL版本没有做功能裁剪,sudo apt install libgsl-dev libgsl23gsl_sf_hermite_phys应该能正常调用。
方法2:手动下载兼容的完整deb包安装
如果PPA访问有问题,你可以直接从Ubuntu后续版本的仓库下载兼容16.04的GSL deb包(比如Ubuntu 18.04的包,在16.04上能稳定运行):
- 下载对应的运行库和开发包:
(如果是32位系统,把wget http://archive.ubuntu.com/ubuntu/pool/universe/g/gsl/libgsl23_2.5+dfsg-6_amd64.deb wget http://archive.ubuntu.com/ubuntu/pool/universe/g/gsl/libgsl-dev_2.5+dfsg-6_amd64.debamd64换成i386即可) - 安装deb包:
sudo dpkg -i libgsl23_2.5+dfsg-6_amd64.deb libgsl-dev_2.5+dfsg-6_amd64.deb - 若出现依赖问题,执行修复命令:
这个2.5版本的GSL包含完整的特殊函数集,sudo apt -f installgsl_sf_hermite_phys肯定能用。
验证安装效果
完成安装后,重新用你的命令编译测试代码:
g++ gsl_test.cpp -lgsl -lgslcblas -lm
如果编译顺利通过,运行生成的程序就能确认Hermite多项式功能正常工作了。
内容的提问来源于stack exchange,提问作者jman
相关产品推荐
相关产品推荐

