2016-01-23 147 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 

爲什麼可執行文件沒有得到th e最後一種環境變量值(GSL_RNG_SEED = 1和GSL_RNG_TYPE =「taus」)?

回答

1

您應該使用export來設置環境變量。所以 export GSL_RNG_SEED=1 export GSL_RNG_TYPE="taus"