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

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

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

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

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

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

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

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

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

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

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

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

3) Установите переменную среды моего пути в местоположение .dll:C:UsersRohanDesktopGnuWin32bin;

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) = %.18en", x, y);
  return 0;
}

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

C:UsersRohanDesktop>gcc -Wall -I"C:UsersRohanDesktopGnuWin32include" -L"C:UsersRohanDesktopGnuWin32lib" -lgslcblas -lgsl -lm -o test test.c

это привело к следующему сообщению об ошибке:

C:UsersRohanAppDataLocalTempccW8cO7I.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)