2016-01-23 127 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"