[Top][All Lists]
[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
>