Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.os.linux.development > #27
| From | guido84 <guido84@invalid.invalid> |
|---|---|
| Newsgroups | it.comp.os.linux.development |
| Subject | Re: Linea di comando per gcc |
| Date | 2017-06-03 06:56 +0000 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <ogtmic$11ij$1@gioia.aioe.org> (permalink) |
| References | <ogsm4v$1orl$1@gioia.aioe.org> <ogt3q1$2co$1@virtdiesel.mng.cu.mi.it> |
Il 3/6/2017 03:36:01 enoquick scrisse:
>Il 02/06/2017 16:42, guido84 ha scritto:
>> Su it.comp.lang.c mi e' stato detto che e' meglio non mettere
>> il "-lm" in questa linea di comando:
>> $: gcc -Wall -O3 log_e.c -lm -o log_e
>> Il sorgente log_e.c fatto apposta e' questo:
>> --------------
>> #include <stdio.h>
>> #include <math.h>
>>
>> int main()
>> {
>> double enne;
>> scanf("%lf", &enne);
>> printf("\nlog(%lf) = %lf\n\n", enne, log(enne));
>>
>> return 0;
>> }
>> -----------------
>>
>> Ebbene, io sono un principiante, chi me l'ha detto ha esperienza
>> ma non di Linux (usa Windows NT) e m'ha suggerito di cambiare:
>> double enne; -> double enne = 0.0;
>>
>> ma Ld continua a non trovare le librerie:
>> ----------
>> /tmp/ccwk0tkr.o: nella funzione "main":
>> prova.c:(.text.startup+0x2d): riferimento non definito a "log"
>> collect2: error: ld returned 1 exit status
>> -----
>>
>> Potreste darmi una dritta su questa questione grazie in anticipo?
>>
>enne e' usato solo per l'input, quindi non serve inizializzarlo.
>Per il linker occorre dare -lm per includere la libreria matematica che
>contiene log
Grazie della rispota, hai confermato quel che pensavo.
>Non vedo dove sta il problema.
Ho usato la linea di comando con "-lm", un certo "jak" mi ha detto
su it.comp.lang.c di NON usarla perche' potrebbe causare errori.
Copio e incollo:
-------------
Quasi tutti i compilatori, quando vedono utilizzare dati in
virgola mobile, includono una libreria matematica. Nella fattispecie, il
gcc ne utilizza una versione composta da built-in function che magari
non è la migliore ma sicuramente produce file eseguibili dalle
dimensioni più contenute. Potresti anche volerne utilizzare una ottenuta
da terze parti e non quella standard e siccome il parametro -lm utilizza
la 'fast link table' e cioè cerca nei percorsi che hai dichiarato una
libreria che inizia per 'lib' e finisce per quel che hai messo dopo la
'l' (in questo caso libm.a) ti troveresti, in questo caso errori del
linker per entry duplicate. Quindi no, l'opzione -lm non _deve_ esser
messa, eventualmente _può_.
Approfitterei anche per far notare che la portabilità dipende da come
scrivi il codice sorgente e, sicuramente, non dalle librerie con cui
linki il codice oggetto compilato. Anzi.
------------
>Piuttosto se si vuole fare le cose per bene occorre porsi la domanda
>'che succede se un utente immette un qualcosa che non sia convertibile
>in double?'
Si' ma quel codice l'avevo scritto (per jak) solo per vedere se
riuscivo a compilare senza usare "-lm". Comunque quelli della
libreria math.h sono bravissimi, perche' m'aspettavo un segfault,
invece ecco cosa mi dice:
$ echo vediamo | ./log_e
log(-0.000000) = nan
e questo con qualunque altra parola o lettera in input.
Grazie di nuovo e ciao
P.S. Ne approfitto: se volessi evitare di dover dare l'input con
"echo ... | ", ma darlo come si fa con $1 a bash, come dovrei
cambiare il sorgente?
Non e' mica facile trovarlo il modo, perche' ho provato con
sscanf() ma mi fa casini inenarrabili :-(
--
Saluti,
Guido
Back to it.comp.os.linux.development | Previous | Next — Previous in thread | Next in thread | Find similar
Linea di comando per gcc guido84 <guido84@invalid.invalid> - 2017-06-02 21:42 +0000
Re: Linea di comando per gcc enoquick <enoquick@gmail.com> - 2017-06-02 20:36 -0500
Re: Linea di comando per gcc guido84 <guido84@invalid.invalid> - 2017-06-03 06:56 +0000
Re: Linea di comando per gcc Alessandro Pellizzari <shuriken@amiran.it> - 2017-06-03 08:39 +0100
Re: Linea di comando per gcc guido84 <guido84@invalid.invalid> - 2017-06-03 08:38 +0000
Re: Linea di comando per gcc Giuseppe Della Bianca <bepi.zac@zac.adria.it> - 2017-06-03 14:51 +0200
Re: Linea di comando per gcc guido84 <guido84@invalid.invalid> - 2017-06-03 13:40 +0000
Re: Linea di comando per gcc Giuseppe Della Bianca <bepi.zac@zac.adria.it> - 2017-06-04 12:04 +0200
Re: Linea di comando per gcc Alessandro Pellizzari <shuriken@amiran.it> - 2017-06-03 14:38 +0100
Re: Linea di comando per gcc guido84 <guido84@invalid.invalid> - 2017-06-03 14:13 +0000
Re: Linea di comando per gcc enoquick <enoquick@gmail.com> - 2017-06-03 21:07 -0500
Re: Linea di comando per gcc guido84 <guido84@invalid.invalid> - 2017-06-04 08:15 +0000
csiph-web