ottimizzare la compilazione

Postate qui per tutte le discussioni legate a Linux in generale.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Gnu/Linux in genere, se l'argomento è specifico alla Slackware usate uno dei forum Slackware o Slackware64.
3) Leggere attentamente le risposte ricevute
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
fede_home
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: gio 6 gen 2005, 0:00
Località: Mondavio (pu)

ottimizzare la compilazione

Messaggio da fede_home »

ciao a tutti,
volevo chiedervi se qualcuno conosce il modo per vedere se un file è stato compilato con un certa ottimizzazione dal compilatore. Mi speigo, ho il mio "hello world", lo compilo con

Codice: Seleziona tutto

g++ hello.cpp
faccio

Codice: Seleziona tutto

file a.out
e ottengo

Codice: Seleziona tutto

a.out: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
ora se faccio

Codice: Seleziona tutto

 g++ -O3 -march=athlon-xp -mcpu=athlon-xp hello.cpp

Codice: Seleziona tutto

file a.out
mi da lo stesso risultato eppure ho usato i parametri di ottimizzazione
sbaglio io ho è file che non capisce cosa volgio???


ciao e grazie

Avatar utente
whites11
Linux 4.x
Linux 4.x
Messaggi: 1147
Iscritto il: ven 30 set 2005, 13:54
Località: Udine

Messaggio da whites11 »

prova con:

Codice: Seleziona tutto

export CFLAGS="-O3 -march=athlon-xp -mcpu=athlon-xp"
export CXXFLAGS="-O3 -march=athlon-xp -mcpu=athlon-xp"
g++ hello.cpp

fede_home
Linux 0.x
Linux 0.x
Messaggi: 53
Iscritto il: gio 6 gen 2005, 0:00
Località: Mondavio (pu)

Messaggio da fede_home »

stessa cosa.... ora non capisco se sbaglio nel voler usare il comando file o se proprio il compilato non è ottimizzato per athlon...

Avatar utente
albatros
Iper Master
Iper Master
Messaggi: 2098
Iscritto il: sab 4 feb 2006, 13:59
Kernel: 6.18.0
Desktop: gnome and lxqt
Distribuzione: Ubuntu 24.04 & FC 41
Località: Darmstadt - Germania

Messaggio da albatros »

Non conosco il codice del programma, ma mi chiedo quali ottimizzazioni si possano fare per un file chiamato hello.cpp ...
Fagli fare qualche loop e usa un'opzione tipo -O2 o -O3, fagli fare qualche trasformata di fourier, qualche calcolo matematico complesso...
Comunque sia, per quanto non sappia se sia una risposta giusta, leggendo
man file, http://www.dac.neu.edu/cgi-bin/man-cgi?elf , dando objdump -i (vedi man objdump) e dando (e provando con l'opzione -a) readelf mi pare che non ci sia un modo di vedere in maniera banale se e come un eseguibile sia stato ottimizzato.
Comunque l'architettura di base di un athlon è sempre un i386, se non usi qualcosa che richieda istruzioni mmx, sse, 3dnow eccetera l'eseguibile sarà uguale a quello di un i386, a meno di informazioni aggiuntive messe lì dal compilatore su come è stato compilato che mi pare però il formato elf non preveda di essere molto dettagliate.

Rispondi