Доступ запрещен? при выполнении примера example.o (образец статистики gsl) - PullRequest
2 голосов
/ 18 августа 2011

Я скачал, скомпилировал и установил Научную библиотеку GNU (gsl) на моем Mac, которая по умолчанию находится в каталоге / usr / local / include / gsl.

Чтобы проверить это, я попытался скомпилировать и выполнить пример программы на C (найден в документе gsl).

 #include <stdio.h>
 #include <gsl/gsl_statistics.h>

 int
 main(void)
 {
   double data[5] = {17.2, 18.1, 16.5, 18.3, 12.6};
   double mean, variance, largest, smallest;

   mean     = gsl_stats_mean(data, 1, 5);
   variance = gsl_stats_variance(data, 1, 5);
   largest  = gsl_stats_max(data, 1, 5);
   smallest = gsl_stats_min(data, 1, 5);

   printf ("The dataset is %g, %g, %g, %g, %g\n",
          data[0], data[1], data[2], data[3], data[4]);

   printf ("The sample mean is %g\n", mean);
   printf ("The estimated variance is %g\n", variance);
   printf ("The largest value is %g\n", largest);
   printf ("The smallest value is %g\n", smallest);
   return 0;
 }

Для компиляции,

$ gcc -I / usr / local / include -c example.c

$ ls

example.c example.o

И, чтобы выполнить его,

$ ./example.o

-bash: ./example.o: В доступе отказано

Что происходит? Кто может управлять им, кроме меня?

1 Ответ

1 голос
/ 18 августа 2011

example.o - это объектный файл, а не исполняемый файл.

Согласно документации (info gsl-ref для чтения), это должно работать (или, по крайней мере, близко).

$ gcc -Wall -I/usr/local/include -c example.c
$ gcc -L/usr/local/lib example.o -lgsl -lgslcblas -lm -o example
$ ./example
...