help-gsl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Help-gsl] Random generator: linking problem


From: Marco Tului
Subject: Re: [Help-gsl] Random generator: linking problem
Date: Mon, 11 May 2009 20:04:59 +0200

I'm sorry, but I don't understand: what do you mean? Could you explain me a
bit more explicitly, please?

Thanks,

Marco Tului.




On Mon, May 11, 2009 at 7:34 PM, Carl Boettiger <address@hidden> wrote:

> If you compile an executable instead of an object file (without -c)
> does it work?
> -Carl
>
> On Mon, May 11, 2009 at 8:02 AM, Marco Tului <address@hidden>
> wrote:
> > Hi all,
> > excuse me, I'm trying to compile a random generator C++ class for my
> > library, in which I use the GSL. But even tough I compile without errors
> my
> > hpp/cpp, when in a test main file I try to instantiate an object of it, I
> > have these linking errors:
> >
> > ::::::::::::::::::::::::::::::::::::::::::::::
> > /usr/bin/ld: Undefined symbols:
> > _gsl_rng_alloc
> > _gsl_rng_default
> > _gsl_rng_free
> > collect2: ld returned 1 exit status
> > make: *** [default] Error 1
> >
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> >
> > I have read the GSL manual, and in my Makefile I wrote:
> >
> > :::::::::::::::::::::::
> > # RANDOM_NUMBER_GENERATOR
> > random_generator.o: random_generator.hpp random_generator.cpp
> > g++ -c random_generator.cpp -lgsl -lgslcblas -lm
> >
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> >
> > as it seemed me correctly, so, why that? The hpp of my class is:
> >
> > :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> > #ifndef RANDOM_GENERATOR__HPP
> > #define RANDOM_GENERATOR__HPP
> >
> >
> > #include <gsl/gsl_rng.h> // here we use the "GNU Scientific Library"
> (GSL)
> > to obtain a random number
> > #include <gsl/gsl_randist.h> // to obtain gsl_ran_gaussian()
> > #include <iostream>
> > using namespace std;
> >
> >
> > enum Distribution_type {
> >  NORMAL = 1,
> >  UNIFORM = 2,
> >  BINARY = 3
> > };
> >
> >
> > class Random_generator {
> >
> >  private:
> >    const gsl_rng_type *_type_gen;
> >    gsl_rng *_gen; // 'gen' is the (random) generator
> >
> >    Distribution_type _distr_type;
> >
> >
> >  public:
> >    // default CONSTRUCTOR
> >    Random_generator( ) {
> >      _type_gen = gsl_rng_default;
> >      _gen = gsl_rng_alloc(_type_gen); // in this way we allocate, in the
> > standard way, the generator 'gen'
> >    };
> >
> >    // DESTRUCTOR
> >    ~Random_generator( ) {
> >        gsl_rng_free(_gen); // we free the memory associated with the
> > generator 'r'
> >    };
> >
> >
> >    double Get_rnd_generator( ) const { // by default we assume
> > Distribution_type = NORMAL
> >      return gsl_ran_gaussian(_gen, 1);
> >    };
> >
> >    double Get_rnd_generator(Distribution_type distr_type_init) const {
> >      if(distr_type_init == NORMAL) {
> >        return gsl_ran_gaussian(_gen, 1);
> >      }
> >      else if(distr_type_init == UNIFORM) {
> >        // vv return sample da distribuzione uniforme...
> >      }
> >      else if(distr_type_init == BINARY) {
> >        // vv return sample da distribuzione binaria...
> >      }
> >    };
> >
> >
> > };
> >
> >
> > #endif
> >
> ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
> >
> >
> > The cpp file simply include that hpp. By the way, I've installed and
> > compiled my GSL (with shared libraries option etc.) on my Mac Os 10.4.11.
> >
> >
> >
> >
> > Thanks in advance, bye.
> >
> > Marco Tului.
> > _______________________________________________
> > Help-gsl mailing list
> > address@hidden
> > http://lists.gnu.org/mailman/listinfo/help-gsl
> >
>
>
>
> --
> Carl Boettiger
> Population Biology, UC Davis
> http://two.ucdavis.edu/~cboettig
>


reply via email to

[Prev in Thread] Current Thread [Next in Thread]