Использование GSL в Windows (компиляция, привязка, ect). Пошаговое руководство

Мне нужно написать некоторый код С с помощью GSL (GNU Scientific Library) и никогда раньше не использовала библиотеки.

Я физик, а не компьютерный ученый, и сражаюсь с большим количеством жаргона в документации GNU.

В течение последних нескольких часов я был полностью смущен тем, как использовать GSL на машине Windows 7. Я пробовал читать множество вопросов на этом сайте, а также другие, но на моем голосе много жаргона.

Обычно, когда я пишу программу, я делаю следующие шаги:

1) Откройте блокнот ++, включите любой из моих собственных файлов заголовков и напишите мой код.

2) Скомпилируйте мою программу, открыв приглашение командной строки Windows и набрав:

gcc -Wall -std=c99 -o myfile myfile.c

Я сделал gcc переменную среды и установил gcc, установив CodeBlocks для Windows (однако я не использую кодовые блоки).

Из исследования в Интернете это то, что мне удалось сделать, чтобы использовать GSL:

1) Скачан GSL для Windows: http://gnuwin32.sourceforge.net/packages/gsl.htm

2) Установил его на рабочем столе, так что мой Путь не будет содержать пробелов (я прочитал пробелы в Пути, может быть проблемой).

3) Задайте переменную окружения Path для местоположения .dll: C:\Users\Rohan\Desktop\GnuWin32\bin;

4) Попытка скомпилировать примерную программу GSL:

#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;
}

5) Я вызвал компилятор следующим образом:

C:\Users\Rohan\Desktop>gcc -Wall -I"C:\Users\Rohan\Desktop\GnuWin32\include" -L"C:\Users\Rohan\Desktop\GnuWin32\lib" -lgslcblas -lgsl -lm -o test test.c

В результате появилось следующее сообщение об ошибке:

C:\Users\Rohan\AppData\Local\Temp\ccW8cO7I.o:test.c:(.text+0x30): undefined reference to `gsl_sf_bessel_J0'
collect2: ld returned 1 exit status

Большая часть этого была выполнена с небольшим пониманием из-за отсутствия фона в CS.

Я даже на правильном пути? Есть ли легкое пошаговое руководство, на нетехническом языке, за которым я могу следить, чтобы это работало?

Любая помощь будет принята с благодарностью, Спасибо!

Ответ 1

Вам нужно поставить test.c перед библиотеками. Библиотеки должны быть указаны в командной строке после того, как используются символы в них, поэтому измените на:

gcc test.c -Wall -I"C:\Users\Rohan\Desktop\GnuWin32\include" -L"C:\Users\Rohan\Desktop\GnuWin32\lib" -lgslcblas -lgsl -lm -o test

    ^^^^^^  (put this first)