linux下gsl安装问题与解决

从http://www.gnu.org/software/gsl/上下载, 按照提示安装之后,一切没有问题, 但是把manual中给出的例子拿来算, 却总不能编译成功. 错误信息为头文件中定义的函数函数没有定义.
像下面的例子中,
#include <stdio.h>
#include <gsl/gsl_block_double.h>
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 加入环境变亮 PKG_CONFIG_PATH中就可以了
一种做法是在自己目录下 .bash_profile中加入
PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
export PKG_CONFIG_PATH
然后, 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_PATH
export LD_LIBRARY_PATH
同样可以加入.bash_profile 中,
这样再运行时就没有问题了.

参考:http://wiki.case.edu/ITS/High_Performance_Computing_Cluster/help_on_GSL

要在Linux系统上安装GSL(GNU Scientific Library),可以按照以下步骤进行操作。 1. 首先,下载GSL的源码包。你可以在官方网站上找到下载链接。将源码包下载到你的本地系统。 2. 解压源码包。打开终端,进入下载目录,使用以下命令解压源码包: ``` tar -zxvf gsl-x.x.tar.gz ``` 3. 进入解压后的目录: ``` cd gsl-x.x ``` 4. 配置和编译。运行以下命令进行配置和编译: ``` ./configure make ``` 这将根据你的系统配置和依赖项编译GSL库。 5. 安装。在完成编译后,运行以下命令进行安装: ``` sudo make install ``` 这将以管理员权限安装GSL库到系统目录。 6. 配置环境变量。为了让系统能够找到GSL库,你需要将库的路径添加到系统的库路径。将以下内容添加到你的`~/.bashrc`文件: ``` export LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH" ``` 保存并退出文件后,运行以下命令使环境变量生效: ``` source ~/.bashrc ``` 现在,GSL库已经成功安装在你的Linux系统上了。你可以使用`gcc`命令来编译链接使用GSL库的程序,如引用所示。如果需要参考更多关于GSL的信息和使用方法,你可以查阅官方网站提供的教程文档和参考手册。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Linux 安装GSL库](https://blog.csdn.net/u012248802/article/details/80655902)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [GSLLinux安装和使用教程(小白教程)](https://blog.csdn.net/weixin_42035282/article/details/131708094)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值