GSL 和环境变量
GSL and environment variables
建造后:
$ 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
为什么可执行文件没有以最后一种方式获取环境变量值(GSL_RNG_SEED=1和GSL_RNG_TYPE="taus")?
您应该使用导出来设置环境变量。所以
export GSL_RNG_SEED=1
export GSL_RNG_TYPE="taus"
建造后:
$ 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
为什么可执行文件没有以最后一种方式获取环境变量值(GSL_RNG_SEED=1和GSL_RNG_TYPE="taus")?
您应该使用导出来设置环境变量。所以
export GSL_RNG_SEED=1
export GSL_RNG_TYPE="taus"