ma .lm serve per tutte le librerie o solo per la math???l
l'opzione -l<nome> serve a caricare la libreria indicata con <nome> (in genere lib<nome>.*), nel caso specifico, -lm carica la libreria math (libm.a)

Adesso l'errore di libreria non lo da piu' lo compila ma non lo fa eseguire!!!!!

Non penso sia errore di codice!!!!!
il codice è ok (magari aggiungi un -Wall alle opzioni passate al compilatore)

potresti postare l'errore?