我使用GSL库测试小程序:
test.c文件
#include <gsl/gsl_math.h>
#include <stdio.h>
#include <gsl/gsl_errno.h>
//#include <gsl/gsl_sf_bessel.h>
//using namespace std;
int main(void)
{
double x=3.0;
double y=gsl_sf_bessel_J1(x);
printf("J1(%g)=%.18e\n", x, y);
return 0;
}
在bashrc文件中如下配置
#GSL
export PATH=$PATH:YOUR_DIRECTORY/bin
export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:YOUR_DIRECTORY/include
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:YOUR_DIRECTORY/lib
export GSL_LD=YOUR_DIRECTORY/lib
然后如下命令:
编译文件:
gcc -o al.o -c test.c
链接文件:
gcc -o al.out al.o -lgsl -lgslcblas -L$GSL_LD -lm
执行成功
但是如果x想用g++编译,先把.c文件改为.cpp
然后执行命令改成:
编译文件:
g++ -o al.o -c test.c
链接文件:
g++ -o al.out al.o -lgsl -lgslcblas -L$GSL_LD -lm
或者直接改为:
g++ -o al.out test.cpp -lgsl -lgslcblas -L$GSL_LD -lm
都出现如下错误:
test.cpp:1:26: fatal error: gsl/gsl_math.h: No such file or directory
#include <gsl/gsl_math.h>
^
compilation terminated.
请问大家这是什么原因造成的呢?谢谢大家的帮助。