Subject: ../sysdeps/i386/elf/start.S:115: undefined reference to `main'
Package: g++-4.1
Version: 4.1.1-21
Severity: serious
Justification: no longer builds from source
*** Please type your report below this line ***
I would compile a cpp source but when compiling with
g++ -o VelocityModel VelocityModel.cc
i receive this error
/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o: In function
`_start':
../sysdeps/i386/elf/start.S:115: undefined reference to `main'
collect2: ld returned 1 exit status
then there is the file:
VelocityModel.cc
----------------------------------------------------------------------------------
// Esercizio 2: motion models
//
// Classe VelocityModel
//
// Implementa gli algoritmi per il modello di velocità
//
//
// Istruzioni compilazione:
// g++ -o VelocityModel VelocityModel.cc
//
#include <time.h>
#include <stdlib.h>
#include <unistd.h>
#include <cmath>
using namespace std;
class VelocityModel {
public:
//impostare a1, a2, a3, a4, a5, a6
//sono i parametri di rumore del moto
double a1;
double a2;
double a3;
double a4;
double a5;
double a6;
//quanto è deltaT (tempo)????
double dT;
//costruttore semplice
VelocityModel()
{
}
//costruttore che riceve come parametri di ingresso i valori di a e di
deltaT
VelocityModel(double aa1,double aa2,double aa3,double aa4,double
aa5,double aa6, double ddT )
{
a1=aa1;
a2=aa2;
a3=aa3;
a4=aa4;
a5=aa5;
a6=aa6;
dT=ddT;
}
~VelocityModel( )
{
}
//algoritmo motion_model_velocity ( pg.123 tabella 5.1)
double algoritmo(double ipotPose[], double control[], double initPose[]
)
{
double mu= 0.5 * ( ((initPose[1]-ipotPose[1])*cos(initPose[3])) +
((initPose[2]-ipotPose[2])*sin(initPose[3])) ) /
( ((initPose[2]-ipotPose[2])*cos(initPose[3])) -
((initPose[1]-ipotPose[1])*sin(initPose[3])) );
double xstar= 0.5*(initPose[1]+ipotPose[1]) +
mu*(initPose[2]-ipotPose[2]);
double ystar= 0.5*(initPose[2]+ipotPose[2]) +
mu*(ipotPose[1]-initPose[1]);
double rstar= sqrt( (initPose[1]-xstar)*(initPose[1]-xstar)
+(initPose[2]-ystar)*(initPose[2]-ystar)
);
double dTeta= atan2( (ipotPose[2]-ystar) , (ipotPose[1]-xstar) ) - atan2(
(initPose[2]-ystar)
,(initPose[1]-xstar) );
double vC= dTeta*rstar/dT;
double omegaC= dTeta/dT;
double gammaC= ((ipotPose[3] - initPose[3]) * dT) - omegaC;
return ( prob( (control[1] - vC), (a1* abs(control[1]) + a2*abs(control[2])
) ) *
prob( (control[2] - omegaC), (a3* abs(control[1]) + a4*abs(control[2]) )
) *
prob( gammaC, (a5* abs(control[1]) + a6*abs(control[2]) ) )
);
}
//algoritmo di supporto al motion_model_velocity (pg. 123 tabella 5.2)
//la funzione calcola la probabilità del suo argomento "a" sotto una
distribuzione centrata
//a zero con deviazione standard "b"
double prob(double a, double b)
{
//prob_normal_distribution
return ( (1/sqrt(2*M_PI*b*b))* exp(-0.5*a*a*(1/b)*(1/b)) );
//prob_triangular_distribution
// return ( max<double>( 0 , ( (1/(sqrt(6)*b)) - (abs(a)/(6*b*b)) ) ) );
}
//algoritmo sample_motion_model_velocity (pg.124, tabella 5.3)
//la funzione ritorna un array.
//per prendere il valore dall'esterno: inizializzare il vettore come
puntatore
//
//esempio:
//
// double *vettore;
// vettore=sample_algoritmo(control, initPose);
double* sample_algoritmo(double control[], double initPose[])
{
static double ipotPose[3];
double vC= control[1] + sample(a1*abs(control[1]) + a2*abs(control[2]));
double omegaC= control[2] + sample(a3*abs(control[1]) +
a4*abs(control[2]));
double gammaC= sample(a5*abs(control[1]) + a6*abs(control[2]));
ipotPose[1]= initPose[1] - (vC/omegaC)*sin(initPose[3]) +
(vC/omegaC)*sin(initPose[3] + omegaC*dT);
ipotPose[2]= initPose[2] + (vC/omegaC)*cos(initPose[3]) -
(vC/omegaC)*cos(initPose[3] + omegaC*dT);
ipotPose[3]= initPose[3] + omegaC*dT + gammaC*dT;
return ipotPose;
}
//algoritmo di supporto al sample_motion_model_velocity (pg.124 tabella
5.4)
//la funzione genera un campione random da una distribuzione centrata a
zero con deviazione standard "b"
double sample(double b)
{
//--------------------------
//sample normal distribution
//--------------------------
double ran;
double somma=0;
// inizializza random seed:
srand ( time(NULL) );
// genera numero:
ran = (-b) + rand() * (b - (-b)) / RAND_MAX;
// ran = rand() % b + (-b);
for (int i=0; i<12; i++)
{
somma=somma+ran;
ran = (-b) + rand() * (b - (-b)) / RAND_MAX;
}
return (0.5*somma);
//------------------------------
//sample triangular distribution
//------------------------------
/*
double ran1,ran2;
// inizializza random seed:
srand ( time(NULL) );
// genera numero:
ran1 = (-b) + rand() * (b - (-b)) / RAND_MAX;
ran2 = (-b) + rand() * (b - (-b)) / RAND_MAX;
return (sqrt(6)*(ran1+ran2)/2);
*/
} //end sample
};
------------------------------------------------------------------------------------
-- System Information:
Debian Release: 4.0
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Shell: /bin/sh linked to /bin/bash
Kernel: Linux 2.6.18-4-686
Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8)
Versions of packages g++-4.1 depends on:
ii gcc-4.1 4.1.1-21 The GNU C compiler
ii gcc-4.1-base 4.1.1-21 The GNU Compiler Collection
(base
ii libc6 2.3.6.ds1-13 GNU C Library: Shared libraries
ii libstdc++6-4.1-dev 4.1.1-21 The GNU Standard C++ Library v3
(d
g++-4.1 recommends no packages.
-- no debconf information
_________________________________________________________________
Scopri gli ospiti di MSN VideoVip! E intervieni in diretta!
http://videovip.it.msn.com/
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]