C++ C:运行GSL函数
尽管程序编译成功,但计算机拒绝运行包含GSL函数的程序。例如,考虑下面的程序作为GSL网站上的一个例子:C++ C:运行GSL函数,c++,c,gsl,C++,C,Gsl,尽管程序编译成功,但计算机拒绝运行包含GSL函数的程序。例如,考虑下面的程序作为GSL网站上的一个例子: // Test program for GSL RNG #include <stdio.h> #include <gsl/gsl_rng.h> int main (void) { const gsl_rng_type * T; gsl_rng * r; int i, n = 10; gsl_rng_env_setup(); T = gsl
// Test program for GSL RNG
#include <stdio.h>
#include <gsl/gsl_rng.h>
int main (void)
{
const gsl_rng_type * T;
gsl_rng * r;
int i, n = 10;
gsl_rng_env_setup();
T = gsl_rng_default;
r = gsl_rng_alloc (T);
for (i = 0; i < n; i++)
{
double u = gsl_rng_uniform (r);
printf ("%.5f\n", u);
}
gsl_rng_free (r);
return 0;
}
对不起,是用法语写的,但我想你会明白要点的。GSL已安装,我已亲自检查是否存在头文件。有人能帮忙吗?您似乎没有正确链接GSL库。例如,如果您的GSL库的相对路径是LIB_GSL,并且如果您希望静态链接GSL库,那么您需要包含一行如下所示(针对GSL 1.16测试) 如果您也使用BLAS功能,并且自己不链接任何其他BLAS库,那么您还应该链接GSL中包含的BLAS库,如果您静态链接(针对GSL 1.16测试),该库看起来会像这样:
看来你的程序链接不正确。如果GSL库安装在默认位置/usr/local/lib,则可能缺少支持库(CBLAs库)。GSL还为它提供了一个名为libgslcblas.a的库(如果您的系统没有) 尝试将您的程序链接到:
$ gcc -L<location_of_lib> yourProgram.o -lgsl -lgslcblas -lm
$gcc-L yourProgram.o-lgsl-lgslcblas-lm
-使用-L选项,提供库的位置,如果它安装在默认位置,则不需要它。C!=C++,title在C代码时指定C。cc< /Cord>文件扩展名似乎表示C++。一般来说,您应该只标记您正在编写/编译的语言,除非您提出了关于差异或相似性的问题。
LIB_GSL/.libs/libgsl.a
LIB_GSL/cblas/.libs/libgslcblas.a
$ gcc -L<location_of_lib> yourProgram.o -lgsl -lgslcblas -lm