首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gsl是如何实现其它cblas链接功能的?

gsl是如何实现其它cblas链接功能的?
EN

Stack Overflow用户
提问于 2016-08-06 09:08:24
回答 2查看 492关注 0票数 0

您知道我如何设计gsl用来允许用户在各种cblas实现之间切换的相同概念吗?

当gsl自身构建时,应该将gsl所依赖的cblas依赖硬编码到gsl库中。

2.2.2与替代BLAS库连接 下面的命令行显示了如何将同一个应用程序链接到另一个CBLAS库libcblas.a, gcc例子。o -lgsl -lcblas -lm 为了获得最佳的性能,应该为-lcblas使用一个优化的特定于平台的CBLAS库。图书馆必须符合CBLAS标准。ATLAS包提供了一个带有CBLAS接口的便携式高性能BLAS库.它是免费的软件,应该安装任何工作需要快速矢量和矩阵操作。以下命令行将与ATLAS库及其CBLAS接口链接, gcc例子。o -lgsl -lcblas -latlas -lm 如果ATLAS库安装在非标准目录中,请使用-L选项将其添加到搜索路径中,如前所述。 有关BLAS函数的更多信息,请参见BLAS支持。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-06 09:55:49

Blas图书馆

代码语言:javascript
复制
gcc -c -Wall -Werror -fpic blas.cpp

gcc -shared -o libblas.so blas.o

GSL库,实际上是使用blas,但我们没有链接到它。

代码语言:javascript
复制
gcc -c -Wall -Werror -fpic gsl.cpp

gcc -shared -o libgsl.so gsl.o

同时链接到gsl和blas的示例应用程序。

代码语言:javascript
复制
gcc -Wall -o main main.cpp -L../mygsl -lgsl -L../mycblas -lblas
票数 -1
EN

Stack Overflow用户

发布于 2016-08-06 09:13:52

这里没有特殊的概念--只是实现相同API的多个库和具有相同ABI的库。

换句话说,您可以编写一个使用来自#include foo.h的函数#include foo.h的程序。Libfoo.so是一个导出符号int do_stuff(char*)的共享库对象,因为它是从包含int do_stuff(char*)实现的程序生成的。

如果您现在编写了第二个库来实现与libfoo相同的所有符号,那么您就可以在libfoo的位置上使用它了。

这里所发生的一切就是这样。GSL使用BLAS符号。BLAS确切地定义了这些符号是什么(读:它们的C函数签名),所以您可以使用任何您想要的BLAS实现。(假设所有这些都是用兼容的编译器/链接器构建的)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38802521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档