2016-01-23 4 views
0

После строительства:GSL и переменные окружения

$ gcc generator.c -lm -lgsl -lgslcblas -lm 

код:

#include <stdio.h> 
#include <gsl/gsl_rng.h> 
gsl_rng * r; 
/* global generator */ 
int main (void) 
{ 
    const gsl_rng_type * T; 
    gsl_rng_env_setup(); 
    T = gsl_rng_default; 
    r = gsl_rng_alloc (T); 
    printf ("generator type: %s\n", gsl_rng_name (r)); 
    printf ("seed = %lu\n", gsl_rng_default_seed); 
    printf ("first value = %lu\n", gsl_rng_get (r)); 
    gsl_rng_free (r); 
    return 0; 
} 

А затем запустить его в пути:

$ ./a.out 

я получаю:

generator type: mt19937 
seed = 0 
first value = 4293858116 

Если я:

$ GSL_RNG_SEED=1 GSL_RNG_TYPE="taus" ./a.out 

я получаю:

GSL_RNG_TYPE=taus 
GSL_RNG_SEED=1 
generator type: taus 
seed = 1 
first value = 802792108 

Но после того, как делать:

$ GSL_RNG_SEED=1 
$ GSL_RNG_TYPE="taus" 
$ ./a.out 

я получаю тот же результат, как в первый раз:

generator type: mt19937 
seed = 0 
first value = 4293858116 

Почему исполняемый файл не получает e значения переменных среды (GSL_RNG_SEED = 1 и GSL_RNG_TYPE = "taus") последним способом?

ответ

1

Вы должны использовать экспорт для установки переменных окружения. Таким образом, export GSL_RNG_SEED=1 export GSL_RNG_TYPE="taus"

Смежные вопросы