Я пытаюсь запустить 2 простых примера в c / c ++ , используя научную библиотеку GNU .
Это коды:
1-й: Пример программы
#include <stdio.h>
#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;
}
2-й: Пример программ для матриц
#include <stdio.h>
#include <gsl/gsl_matrix.h>
int main (void)
{
int i, j;
gsl_matrix * m = gsl_matrix_alloc (10, 3);
for (i = 0; i < 10; i++)
for (j = 0; j < 3; j++)
gsl_matrix_set (m, i, j, 0.23 + 100*i + j);
for (i = 0; i < 100; i++) /* OUT OF RANGE ERROR */
for (j = 0; j < 3; j++)
printf ("m(%d,%d) = %g\n", i, j,
gsl_matrix_get (m, i, j));
gsl_matrix_free (m);
return 0;
}
Я видел в Центре программного обеспечения , что у меня есть Научная библиотека GNU (GSL) - пакет библиотеки (libgsl0ldbl 1.16 + dfsg-1ubuntu1) но в документации, которую я прочитал, сказано, что мне нужно скомпилировать следующий код:
$ gcc -Wall -I/usr/local/include -c example.c
И каталог /usr/local/include
был пуст, поэтому недавно я также установил вручную с сайта Main GSL - GNU Сайт научной библиотеки новой версии GSL2.1 . Затем я запускаю код, упомянутый выше, чтобы у меня был новый файл example.o, затем я запускаю следующий код:
$ gcc -L/usr/local/lib example.o -lgsl -lgslcblas -lm
Итак, у меня был файл a.out
, я пытался запустить $ ./a.out
, но вывод был:
`./a.out: error while loading shared libraries: libgsl.so.19: cannot open shared object file: No such file or directory`
Я тоже пробовал эту команду:
$ ldconfig -p | grep gsl
libgslcblas.so.0 (libc6,x86-64) => /usr/lib/libgslcblas.so.0
libgsl.so.0 (libc6,x86-64) => /usr/lib/libgsl.so.0
Итак, я вижу, что исключение a.out
запрашивает libgsl.so.19
, но ldconfig сказал, что Библиотека на ПК - это libgsl.so.19
можно установить путь библиотеки и экспорта его, это - грязный путь, но это работает
, экспорта*/data2/Irfan/gsl/lib является путем того, где Вы установили gsl
Я предполагаю, что Ваша проблема, возможно, была решена теперь. Этот ответ предоставит легкую ссылку любому, кто, возможно, столкнулся с подобной проблемой.
Кроме решения Irfan, которое является совершенно допустимым решением. Другая опция состоит в том, чтобы связать статическую библиотеку во время соединения.
gcc -L/usr/local/lib example.o -l:libgsl.a -lgslcblas -lm