Pagina 1 di 1

Cflags e AMD64

Inviato: gio 16 giu 2005, 18:12
da Street41
Ciao a tutti!

Ho sempre letto e sentito che quando si parla di CFLAGS, gli amici di gentoo possono dare una mano. A questo Link http://gentoo-wiki.com/Safe_Cflags#Opte ... _.28AMD.29, ho trovato le cflags consigliate per l'AMD64 e Opteron. Ho pensato: "se vanno bene per gentoo, perchè non possono andare bene per la mia slack?"
A questo punto mi sono buttato a capofitto su un programma che da qualche giorno dovevo instalallare: Easytag. Faccio un Export di CHOST, CFLAGS e CXXFLAGS e lancio il .configure. Pam! neanche il tempo di farlo e ottengo:

checking for C compiler default output file name... configure: error: C compiler cannot create executables
See `config.log' for more details.

Entro nel file di Log e capisco subito che gcc non ha idea di cosa siano mark=k8. Chissa come fanno gli amici di gentoo? Mi viene un idea..vado su slacky e vedo che Flags sono state usate per xine (disponibile anche x86_64). Trovo solo "-02", al che mi chiedo: "ma che Flag devo usare per il mio amd64?"

Ciao, Andrea

Inviato: gio 16 giu 2005, 18:23
da Bart
Sono molto ignorante in materia, comunque da quello che so i CFLAGS si usano in fase di compilazione e servono a modificare il criterio con cui i compilatori generano il codice.
Qualche tempo fa era nata una discussione su questo forum relativa ai CFLAGS. Ti riporto il link.
http://www.slacky.it/modules.php?name=F ... ght=cflags

Inviato: gio 16 giu 2005, 18:44
da useless
ho analizzato i pacchetti di xine e ti posso dire che sono compilati a 32 bit. basta lanciare il comando "file" su un qualsiasi eseguibile, e questo dirà se sono compilati a 32 o 64 bit. ad esempio:
ccl10 ~ # file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped

mentre su un qualcosa compilato a 64 bit si ottiene:
/boot/vmlinux: ELF 64-bit MSB executable, SPARC V9, version 1 (SYSV), statically linked, stripped
(questo è compilato su sparc, non su x86_64)

qual è il problema nella compilazione per x86_64? che ci vuole un altro compilatore! infatti il gcc di default di slackware sa solo creare binari a 32 bit! bisogna creare un crosscompilatore in grado di girare su x86 e creare codice per x86_64. questo si può fare col crossgcc (googlate please).
tuttavia compilare un qualsiasi programma è complicato dal fatto che non credo che un binario a 64bit possa linkare una libreria a 32, quindi bisognerebbe partire da 0, creando prima una versione a 64bit di tutte le librerie necessarie.
insomma, un lavoraccio. c'è slamd64 già bell'e pronta...

(ps: mi riservo di correggere tutto quel che ho detto in questo post :D)