Não é possível localizar arquivos de cabeçalho gsl ao compilar [duplicado]

0

Eu sou completamente novo no Linux. Acabei de instalar o Ubuntu 16.04 em um PC antigo e estou tentando instalar a biblioteca gsl para um projeto. Eu corri

sudo apt install libgsl2, libgsl0-dev, libgsl-dev, gsl-bin

Então eu fiz um programa gsltest.c test com o código

#include <stdio.h>
#include <gsl_rng.h>
#include <gsl_randist.h>

int main (int argc, char *argv[])
{
  /* set up GSL RNG */
  gsl_rng *r = gsl_rng_alloc(gsl_rng_mt19937);
  /* end of GSL setup */

  int i,n;
  double gauss,gamma;  

  n=atoi(argv[1]);
  for (i=0;i<n;i++)
    {
      gauss=gsl_ran_gaussian(r,2.0);
      gamma=gsl_ran_gamma(r,2.0,3.0);
      printf("%2.4f %2.4f\n", gauss,gamma);
    }
  return(0);
}

Copiei o código de algum lugar na internet e continuei com o seguinte comando

gcc -Wall -I/home/myname/gsl/include -c gsltest.c

que gera um erro:

gsltest.c:2:21: fatal error: gsl_rng.h: No such file or directory compilation terminated.

O que estou fazendo de errado?

    
por noobieboobie 12.05.2017 / 22:48

1 resposta

1

Se você instalou libgsl-dev , então os cabeçalhos devem estar em /usr/include/gsl/ , portanto o compilador deve ser capaz de localizá-los se você especificar -I/usr/include/gsl

Ou você pode omitir totalmente a diretiva -I se você alterar seu #include para #include <gsl/gsl_randist.h> etc.

Como alternativa, convém usar o pkg-config para localizar os cabeçalhos automaticamente, por exemplo,

gcc -Wall 'pkg-config --cflags gsl' -c gsltest.c
    
por steeldriver 13.05.2017 / 00:01