linux下如何编译安装gsl库,linux 下安装gsl(GNU Scientific Library)

还是感觉到好笑, 整好和上学期体育课小组的名字一样, 不过这次比较正经了, GNU Scientific Library.

自己是个新手, 对linux下如何安装这种包还不太清楚.

从http://www.gnu.org/software/gsl/上下载, 按照提示安装之后,一切没有问题, 但是把manual中给出的例子拿来算, 却总不能编译成功. 错误信息为头文件中定义的函数函数没有定义.像下面的例子中,

#include

#include

int main()

{

gsl_block * b = gsl_block_alloc(100);

printf("length of block = %u\n", b->size);

printf("block data address = %#x\n", b->data);

gsl_block_free(b);

return 0;

}

编译链接会提示:undefined reference to gsl_block_alloc…..

collection 2: ld ……

查看/usr/local/include/gsl(默认安装路径)中gsl_block_double.h

发现其中包含了函数声明, 但是没有函数定义.

感谢网友,从网上找到了答案.在编译的时候,编译器只要求有函数原型即可.

但是,在链接的时候(ld为链接程序),则需要函数的具体定义,所以,在链接的

时候需要把已经编译好的库也链接过来, 而不能只包含头文件.

从http://ubuntuforums.org/showthread.php?t=270924得知,

可以使用pkg-config –libs gsl来查询使用该库的时候所需的链接选项,

我的是 :  -L/usr/local/lib -lgsl -lgslcblas -lm

另外, 可以使用pkg-config –cflags gsl 会给出编译时需要的编译选项.

如果提示

Package gsl was not found in the pkg-config search path.

Perhaps you should add the directory containing `gsl.pc’

to the PKG_CONFIG_PATH environment variable             //我就是出现了这种情况。把相应的/usr/local/lib/pkgconfig (这个路径是不一定的,要根据你安装的路径写。比如我是把gsl安装在/usr/local/gsl目录下的,那么这里加入的路径应该是/usr/local/gsl/lib/pkgconfig,可以自己在linux下去这个目录看看到底pkgconfig是不是在这里。)加入环境变亮 PKG_CONFIG_PATH中就可以了。

一种做法是在自己目录下 .bash_profile中加入

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH  // 注意这里这个高亮的路径是我上面说的根据自己的gsl安装路径对应export PKG_CONFIG_PATH                                                     //找到的pkgconfig的路径哦,我这里就改成了/usr/local/gsl/lib/pkgconfig了。

然后, source .bash_profile  即可.

另外,也可以直接在终端输入

PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH  //关于这个路径的注意事项同上export PKG_CONFIG_PATH

但这只对当前终端窗口适用.

按照这样的编译选项编译之后,运行时 还可能提示出错,

$ ./a.out ./a.out: error while loading shared libraries: libgsl.so.0: cannot open shared object file: No such file or directory.这时候, 需要建立LD_LIBRARAY_PATH 的环境变亮. LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATHexport LD_LIBRARY_PATH同样可以加入.bash_profile 中,这样再运行时就没有问题了. 参考:http://wiki.case.edu/ITS/High_Performance_Computing_Cluster/help_on_GSL 从这里,自己还是学到了一些, 网络是个好东西. (嗯,完全同意,网络确实是好东西,这篇文章除加亮处的注释其他都是引用来滴。感觉挺有用,也学到了些东西,遂存下聊~(*^__^*) 嘻嘻……)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值