背景:

Blei的hlda的C语言实现需要使用C语言的科学计算包GSL,因此决定安装。由于在windows下安装极其繁琐,先在Linux上安装之。

系统环境:

Linux version 2.6.35-22-generic (buildd@allspice) 
(gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu4) ) 
#33-Ubuntu SMP Sun Sep 19 20:32:27 UTC 2010

gsl安装过程

1, 下载 gsl-2.0.tar.gz
2, 安装
tar -zxvf gsl-2.0.tar.gz 
cd gsl-2.0
sudo ./configure
sudo make
sudo make install
执行最后一个命令之后会有很多现实,其中有:
Libraries have been installed in:
   /usr/local/lib

If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
   - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
     during execution
   - add LIBDIR to the `LD_RUN_PATH' environment variable
     during linking
   - use the `-Wl,--rpath -Wl,LIBDIR' linker flag
   - have your system administrator add LIBDIR to `/etc/ld.so.conf'

See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.

 

一个是libgslcblas.so,libgsl.so的位置很重要,编译后的文件被扔到了这里,比如 /usr/local/lib;另一个重要的位置是

gsl_rng.h 这样的头文件所在的文件夹目录,比如/usr/local/include/gsl。如果想要查找他们,可以使用find / -name gsl_rng.h这样的命令。
3,使用gsl
用gsl写一个例子文件gsl_test.c,这个文件来源于http://www.mas.ncl.ac.uk/~ndjw1/teaching/sim/gsl.html
  1. #include <stdio.h>
  2. #include <gsl_rng.h>
  3. #include <gsl_randist.h>
  4. int main (int argc, char *argv[])
  5. {
  6. /* set up GSL RNG */
  7. gsl_rng *r = gsl_rng_alloc(gsl_rng_mt19937);
  8. /* end of GSL setup */
  9. int i,n;
  10. double gauss,gamma;
  11. n=atoi(argv[1]);
  12. for (i=0;i<n;i++)
  13. {
  14. gauss=gsl_ran_gaussian(r,2.0);
  15. gamma=gsl_ran_gamma(r,2.0,3.0);
  16. printf("%2.4f %2.4f\n", gauss,gamma);
  17. }
  18. return(0);
  19. }

(1)第一反应是直接 gcc gsl_test.c

显示错误是:gsl_test.c:2: fatal error: gsl_rng.h: 没有那个文件或目录

(2)这个错误是说没有找到头文件,然后加上头文件的位置,gcc -I/usr/local/include/gsl gsl_test.c

显示错误是:gsl_test.c:(.text+0x12): undefined reference to `gsl_rng_mt19937' ...

(3)这个错误是说没有找到gsl_rng_mt19937的定义,查看了http://www.daniweb.com/software-development/cpp/threads/289812/cant-link-gsl-properly,这里说需要加上-lgsl,即链接到gsl,找到 libgsl.so.

使用命令:gcc -I/usr/local/include/gsl -lgsl gsl_test.c

(4)显示错误是://usr/local/lib/libgsl.so: undefined reference to `cblas_ctrmv'

查看了http://sourceware.org/ml/gsl-discuss/2003-q2/msg00123.html,是说错误是由于没有链接libgslcblas.so引起的,再加上-lgslcblas可以解决问题。

使用命令:gcc -I/usr/local/include/gsl -lgsl -lgslcblas gsl_test.c。

或者命令:gcc -I/usr/local/include/gsl -L/usr/local/lib -lgsl -lgslcblas gsl_test.c

(5)实测需要以下命令: gcc -I/usr/local/include/gsl gsl_test.c -lgsl -lgslcblas

这个时候出现了产出物a.out。

(5)运行a.out

./a.out 出现错误“段错误”

(6)查看源文件,发现还需要输入参数

./a.out 10

结果是:
0.2678 6.9645
3.3488 1.6894
1.9950 2.1575
-4.7934 6.1648
-0.0782 4.0292
1.7871 11.6031
-2.5931 7.7629
0.3634 1.3344
-1.0965 11.1658
0.0142 3.5412

彻底搞定,done#

转自:http://blog.csdn.net/Waleking/article/details/8265008

由于论文数据处理的需要,需要使用libeemd这个包,需要安装gsl科学库,windows下没有办法,只能转战ubuntu进行科学计算。

GSL(GNU Scientific Library)作为三大科学计算库之一,除了涵盖基本的线性代数,微分方程,积分,随机数,组合数,方程求根,多项式求根,排序等,还有模拟退火,快速傅里叶变换,小波,插值,基本样条,最小二乘拟合,特殊函数等

当然最希望通过命令来安装GSL科学库。

方法一:

GSL源码包提供了以下二进制包:

  • gsl-bin:GNU Scientific Library (GSL) -- binary package
  • libgsl0-dbg: GNU Scientific Library (GSL) -- debug symbols package
  • libgsl0-dev: GNU Scientific Library (GSL) -- development package
  • libgsl0ldbl: GNU Scientific Library (GSL) -- library package

终端键入以下命令即可安装:

sudo apt-get install libgsl0ldbl

说明:根据不同的需要选择安装不同的版本,使用 gsl-bin 将会安装所有的内容(gsl - bin 依赖 libgsl0ldbl

方法二:

ubuntu自己编译源码(使用gsl1.6,windows上太麻烦折腾),解压后进入目录,执行:

./configure
make
make install

这个过程需要几分钟。这里还有一点需要注意的是,执行 make install 时,会自动将动态库和头文件分别拷贝到/usr/local/lib和 /usr/local/include 下面,但如果这两个目录没有写权限,就无法创建此二目录,导致安装失败,此时改用 sudo make install或者手动去赋予权限,便能解决此问题。

说明:折腾一圈还是使用前者成功的。

sudo apt-get install libgsl0-dev

参考

 
 

(转载)Ubuntu 安装GNU Scientific library(GSL)的更多相关文章

  1. Ubuntu 安装GNU Scientific library(GSL)

    注: 此系列为自己之前所搭建网站内容. 由于论文数据处理的需要,需要使用libeemd这个包,需要安装gsl科学库,windows下没有办法,只能转战ubuntu进行科学计算. GSL(GNU Sci ...

  2. Visual Stdio 环境下使用 GSL (GNU Scientific Library)

    Visual Stdio 环境下使用 GSL (GNU Scientific Library) 经測试.这里的方法不适用于VS2015. * 这篇文章有点过时了.建议从以下网址下载能够在 vs 环境下 ...

  3. 【C++】GSL(GNU Scientific Library) 的安装及在 Visual Studio 2017 中的使用

    GSL 是 GNU 开发并维护的科学计算的库,其中包括: 复数 多项式的根 特殊函数 向量和矩阵 排列 排序 BLAS支持 线性代数 Eigensystems 快速傅立叶变换 正交 随机数 准随机序列 ...

  4. GNU scientific library

    GNU scientific library 是一个强大的C,C++数学库.它涉及的面很广,并且代码效率高,接口丰富.正好最近做的一个项目中用到多元高斯分布,就找到了这个库. GNU scientif ...

  5. [转载]Ubuntu安装配置 git 服务器和客户端

    原文地址:Ubuntu安装配置 git 服务器和客户端作者:ding404 1.配置前准备 服务器:安装ssh server另外还装了gitosis做git的权限管理 sudo apt-get ins ...

  6. [转载]Ubuntu 安装 万能五笔 输入法

    原文地址:Ubuntu 安装 万能五笔 输入法作者:庖丁解牛 paul@paul-desktop:~/scripts$ cat ins-ibus-wnwb.sh #!/bin/sh set -e cd ...

  7. GSL--GNU Scientific Library 小记

    摘自http://qianjigui.iteye.com/blog/847612 GSL(GNU Scientific Library)是一个 C 写成的用于科学计算的库,下面是一些相关的包 Desi ...

  8. 转载:安装Ubuntu 15.10后要做的事

    转载:安装Ubuntu 15.10后要做的事 原文转载于:http://blog.csdn.net/skykingf/article/details/45267517 Ubuntu 15.10发布了, ...

  9. ubuntu安装nginx时提示error: the HTTP rewrite module requires the PCRE library

    ubuntu安装nginx时提示error: the HTTP rewrite module requires the PCRE library 须要安装pcre包. sudo apt-get upd ...

随机推荐

  1. jlet

    项目地址 :  https://github.com/kelin-xycs/jlet jlet jlet 一个 javascript 的 小 Lib 本来想写一个 javascript 的 小 Lib ...

  2. Java_EE面试题

    Java_EE面试题 欢迎到我的Git仓库去提交您觉得优秀的内容! 1.什么是Servlet? Servlet是用来处理客户端请求并产生动态网页内容的Java类.Servlet主要是用来处理或者是存储 ...

  3. linux安装redis标准流程-按这个来

    1.将下载好的压缩包放到/usr/local目录下# tar xzf redis-3.2.9.tar.gz # cd redis-3.2.9 # make 提示错误 make: cc: Command ...

  4. 由override 和 overload 引发的学习感悟

    工作已三年的我,竟然面试的时候去裸考了.想当然的认为有很多东西会在工作中不知不觉积累下来,现在想想,真是扯淡... 我的三年的工作经验是开发测试的工作,主要负责测试用例的自动化实现,稍深一些的是自动化 ...

  5. 如何在Windows命令行(DOS界面)中调用 编译器 来编译C/C++源程序

    首先说明一下背景: 为什么要在DOS界面编译C/C++源程序?有很多现成的开发环境(IDE)如:vs, vc++等,这些开发环境集成了编译,调试,使用起来很方便,而且图形化操作界面,简洁明了.但是在开 ...

  6. 位置式PID与增量式PID

    //位置式PID float Kp; float Ki; float Kd; float eSum,e0,e1; float pid_control(float now,float target) { ...

  7. 如何让Excel单元格中的名字分散对齐

    1 操作方式 开始->对齐方式->对齐->水平对齐->分散对齐(缩进) 2 优势 不会破坏数据的有效性

  8. Excel 二维数组(数据块)旋转/翻转技巧

    Excel 二维数组(数据块)旋转/翻转技巧 原创 2017-12-30 久石六 久石六 工作中遇到个问题,需要将Excel中的数据块或者说二维数组向右旋转90度,才能再加工处理.当然,不是旋转文本方 ...

  9. C++Primer第五版——习题答案详解(八)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第9章 顺序容器 练习9.1 a.list,需要按字典序插入,可能插入位置在中间 b.d ...

  10. mkimage command not found – U-Boot images will not be built

    ubuntu 14.04 64位系统编译Linux kernel时提示: “mkimage” command not found – U-Boot images will not be built 按 ...