【问题标题】:GSL and environment variablesGSL 和环境变量
【发布时间】:2016-01-23 17:37:19
【问题描述】:

构建后:

$ 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")?

【问题讨论】:

    标签: c environment-variables gsl


    【解决方案1】:

    您应该使用 export 来设置环境变量。所以 export GSL_RNG_SEED=1 export GSL_RNG_TYPE="taus"

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 2019-08-21
      • 2014-07-03
      • 2012-02-13
      • 2016-04-30
      • 2014-04-22
      • 2013-03-03
      • 2011-01-12
      相关资源
      最近更新 更多