Использование GSL с Cygwin G ++
Пытаюсь заставить научную библиотеку Gnu (gsl) работать в cygwin g ++.
Cygwin устанавливается и обновляется со всеми параметрами по умолчанию и включает в себя gsl:runtime, gsl-apps и gsl-doc. Я пытаюсь пример программы, приведенной на веб-сайте gsl:
http://www.gnu.org/software/gsl/manual/html_node/An-Example-Program.html
включают
#include <gsl/gsl_sf_bessel.h>
int
main (void)
{
double x = 5.0;
double y = gsl_sf_bessel_J0 (x);
printf ("J0(%g) = %.18e\n", x, y);
return 0;
}
Кто-нибудь будет так любезен, чтобы дать мне версию вышеупомянутой программы, которая на самом деле работает с g++? Этот заголовочный файл нигде не найден при установке по умолчанию. Как мне получить доступ к dll?
Я также попытался установить нестандартный gsd-devel (инструменты разработчика), который дает мне доступ к файлу заголовка, но при компиляции я получаю "Неопределенную ссылку на gsl__sf_bessel_J0", даже если файл заголовка найденный.
Любая помощь с благодарностью!
1 ответ
Я новичок в CygWin & GSL, и после некоторого исследования я думаю, что ответ заключается в том, что необходимые библиотеки не связаны между собой. Есть умный маленький инструмент, который поставляется с GSL, который называется gsl-config
, Вы можете использовать это, чтобы получить информацию о связях с библиотеками. Так что в вашем случае код:
#include <gsl/gsl_sf_bessel.h>
#include <stdio.h>
int
main (void)
{
double x = 5.0;
double y = gsl_sf_bessel_J0 (x);
printf ("J0(%g) = %.18e\n", x, y);
return 0;
}
может быть скомпилирован с помощью g++ bessel.cpp -lm -lgsl -o bessel.out -L/usr/bin
где -lm -lgsl -L/usr/bin
бит - это результат ввода gsl-config --lib-without-cblas
, Тест с использованием ./bessel.out
,
Надеюсь, это поможет, T