View Full Version : [c] sviluppare con c in ubuntu
Dhavamba
22-08-2012, 09:21
salve da poco ho scaricato ubuntu è programmando con c mi è venuto questo problema...il codice è semplicissimo, sfortunatamente mi fà un errore che in ambiente windows non mi dava:
ecco il codice:
#include <stdio.h>
#include <math.h>
int main()
{
double amount = 4;
double principal = 1000.0;
double rate = 0.5;
int year;
printf("%4s%21s\n", "Year", "Amount on deposit");
for( year = 1; year <= 10; year++) {
amount = principal * pow(1.0 + rate, year);
printf ("%4d%21.2f\n", year, amount);
}
return 0;
}
ed ecco il messaggio di errore
gcc -Wall -o "rate" "rate.c" (nella cartella: /home/salvatore/classi)
/tmp/ccIlGxfp.o: In function `main':
rate.c:(.text+0x64): undefined reference to `pow'
collect2: ld returned 1 exit status
Compilazione fallita.
il problema stà nella funzione pow del paccheto math.h, però non capisco, l'ho inclusa, perchè?
sottovento
22-08-2012, 09:28
prova ad aggiungere -lm come flag di compilazione a gcc
Dhavamba
22-08-2012, 09:43
nada, mi fà lo stesso errore ;_;
Provato ora su Ubuntu pulita:
gibbo@ubuntu64:~$ gcc test.c
/tmp/ccl1PiQf.o: In function `main':
test.c:(.text+0x6e): undefined reference to `pow'
collect2: ld returned 1 exit status
gibbo@ubuntu64:~$ gcc test.c -lm
gibbo@ubuntu64:~$ ./a.out
Year Amount on deposit
1 1500.00
2 2250.00
3 3375.00
4 5062.50
5 7593.75
6 11390.62
7 17085.94
8 25628.91
9 38443.36
10 57665.04
gibbo@ubuntu64:~$
Dhavamba
22-08-2012, 10:15
quindi qual'è il mio problema?
Hai compilato come ho fatto io o in modo diverso? libm.so è presente sul tuo sistema (usa un locate per trovarla)?
sottovento
22-08-2012, 12:27
hai installato il compilatore correttamente?
hai le variabili d'ambiente corrette?
hai provato a cercare libm.a per vedere se e' installata correttamente?
Se con un find (per es. find <start directory> -name libm.a -print) la trovi, potresti provare ad aggiungere
-L <directory> -lm
Questo magari ti e' di aiuto:
http://stackoverflow.com/questions/7284009/cannot-find-lc-and-lm-in-g-linux
salve da poco ho scaricato ubuntu è programmando con c mi è venuto questo problema...il codice è semplicissimo, sfortunatamente mi fà un errore che in ambiente windows non mi dava:
ecco il codice:
#include <stdio.h>
#include <math.h>
int main()
{
double amount = 4;
double principal = 1000.0;
double rate = 0.5;
int year;
printf("%4s%21s\n", "Year", "Amount on deposit");
for( year = 1; year <= 10; year++) {
amount = principal * pow(1.0 + rate, year);
printf ("%4d%21.2f\n", year, amount);
}
return 0;
}
ed ecco il messaggio di errore
gcc -Wall -o "rate" "rate.c" (nella cartella: /home/salvatore/classi)
/tmp/ccIlGxfp.o: In function `main':
rate.c:(.text+0x64): undefined reference to `pow'
collect2: ld returned 1 exit status
Compilazione fallita.
il problema stà nella funzione pow del paccheto math.h, però non capisco, l'ho inclusa, perchè?
la libreria math.h la devi linkare a mano durante la compilazione, inserendo (dopo i vari gcc -o etc etc)
-lm math.h
pabloski
23-08-2012, 15:40
Il tuo è solo un problema di compilazione. Usa questo comando
gcc -o rate rate.c -lm
Il punto è che -lm va messo alla fine del comando, altrimenti non funge.
Dhavamba
27-08-2012, 11:03
grazie, ho aggiunto -lm alla fine, ho risolto tutto!!!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.