# [Risolto] Circa LDFLAGS.

## ciro64

Ave  :Smile: 

La mia domanda è semplice.

Riguardo GCC CFLAGS CXXFLAGS trovomolto in rete.....

peròmi piacerebbe capire bene riguardo le LDFLAGS (preferibilmente in italiano)

per esempio un mio conoscente che usa Gentoo da che è nata mi ha consigliato con la mia macchina di modificare il -Wl,-O1 di default in -Wl,-O2 .

Od anche in un make.conf posto come esempio in qualche blog il -Wl,-z,now.

Boh.... a me piacerebbe solo capirne i significati e se realmente queste opzioni possano migliorare o la perfmance "globale" del sistema o la stabilità (o magari comprometterla).

So che ci son tanto discussioni in merito.

Solo che su GCC trovi tuttto per C*FLAGS ma non per LDFLAGS (basta fare un Ctrl+F in chromium... scrivi nella casellina ldfl e già ti dice che non c'è nesssuna parola con questo contenuto" (spero non essermi spiegato da cani....(nel caso chiedo venia ... ma considerate l'orario vi prego.

Oppure se c'è qualcuno che conosce un buon libro di testo anche cartaceo per studiare gcc sotto non dico tutte ma almeno uona parte delle sue sfumature caratteristiche e potenzialità.

Grazie

Buon Sonno a Tuttti  :Smile: 

Ciao  :Smile: 

----------

## sabayonino

```
# man ld
```

http://linux.die.net/man/8/ld-linux

Discussione sul forum

 :Twisted Evil: 

----------

## djinnZ

 *ciro64 wrote:*   

> per esempio un mio conoscente che usa Gentoo da che è nata mi ha consigliato con la mia macchina di modificare il -Wl,-O1 di default in -Wl,-O2

   :Shocked:   :Confused:   :Question:  non mi ha ancora convinto, mi puzza di c****one... *documentazione binutils da leggere wrote:*   

> -O level If level is a numeric values greater than zero ld optimizes the output. This might take significantly longer and therefore probably should only be enabled for the final binary. At the moment this option only affects ELF shared library generation. Future releases of the linker may make more use of this option. Also currently there is no difference in the linker's behaviour for different non-zero values of this option. Again this may change with future releases.

 E non ho letto nulla nei changelog. Non vorrei, lungi da me l'ipotesi, che ci troviamo di fronte nientemeno che ad una riedizione del buon vecchio CFLAGS="-O9"?!   :Twisted Evil:   :Twisted Evil:   :Twisted Evil:  ma è un poco che non mi aggiorno, forse avranno cambiato qualcosa...  :Rolling Eyes:  o si saranno dimenticati di aggiornare la documentazione... *ciro64 wrote:*   

> Od anche in un make.conf posto come esempio in qualche blog il -Wl,-z,now

 Che i "blogger" del piffero mi stiano sulle scatole quanto e più dei giornalisti ormai sarà scontato per voialtri che sopportate le mie velenose esternazioni ma ...il punto è che proprio affermazioni del genere mi hanno portato ad essre tanto acido nei confronti di codesti sparasentenze.

Non serve a nulla, serve ad ago quando fa i test (se li fa ancora). O meglio potrebbe servire e tanto ma ... potrebbe anche essere una costante fonte di bestemmie e scocciature, che su gentoo già abbondano... quindi pensa a quello che fai. *ciro64 wrote:*   

> Boh.... a me piacerebbe solo capirne i significati e se realmente queste opzioni possano migliorare o la perfmance "globale" del sistema o la stabilità (o magari comprometterla).

 inizia dalla documentazione di binutils come per le CFLAGS.

Nota che mentre CFLAGS è un termine universalmente usato in tutti gli script make ed automake LDFLAGS ... è un pochino più gentoo. nel senso che molti mettono le opzioni al linker insieme a quelle al compilatore (e se leggi bene ... è una cretinata ... soprattutto se usi -O1).

E sono finito a fare pure il mithbuster al posto di equilibrium... che tristezza stò forum... che tristezza codesta dittatura massonico-bancaria... che tristezza codesta nazione/unione...   :Twisted Evil:   ma se un avanzo di sagrestia può diventare primo ministro a suon di frasi fatte vien da sè che qualunque mentecatto si sente in dovere di sparare sentenze... rigorosamente a c***o...  :Twisted Evil:   :Evil or Very Mad: 

@mods: un merge con la discussione originale ... se è possibile ... tanto quello che c'è scritto è tutt'ora valido.

Finito di sbraitare (ormai possiamo solo continuare a scherzare per alleggerire la tristezza delle nostre vite, tra l'altro con il periodo dell'anno in cui aumentano vertiginosamente i suicidi e gli scoppi d'ira alle porte... per chi non lo ha capito parlo del natale) me esco con una domandina anch'io.

Sono sempre più tentato, considerando che ho già CFLAGS="${CFLAGS} -g0", da LDFLAGS="${LDFLAGS} -Wl,-S - -Wl,--hash-style=gnu "... che faccio? Cedo alla tentazione?

Astenersi improvvisati, sparasentenze, c****oni e perdigiorno ... grazie.

Per inciso... si impostano così visto che c'è già un default (a differenza delle CFLAGS che non lo hanno).  :Wink: 

----------

## ciro64

Ok ... per me la discussione può venir chiusa....... apprezzo Sabayonino che cerca sempre di dare .... è una Ottima Persona Oblativa secondo me e di ciò lo Ringrazio  :Smile:   :Smile:   :Smile: .

Ciedo scusa a DjinnZ (no problem se le Sue esternazioni son piuttosto "trancianti" ..... però .... anche se a volte Lei stesso dice di essere "severo" .... io la ammiro (e anche3 qui mi disse già non adularmi perchè peggiori il tuto); però se io apprezzo anche se espresso in modo thrash (non "trash" ma "thrash" .... mi piace il suo metodo educativo. sarò masochista ma è così  :Very Happy: )  se la mia mente non è performante come dovrebe..... ma quantomeno ho prima voluto parlare nel forum di determinate esternazioni.

io non sono un informatico.... sono un Erborista/Fitopreparatore però con passione un po' per l'informatica..... quindi per me poter ottimizzare un OS su mio hardware significa una gran soddisfazione.

Non ho messo mai le mani avanti; so che in rete si trova di tutto e di più (purtroppo) a volte.

Le mie erano solo disquisizioni per cercare di capire di più..... per imparare e non per fare il p***a.

Penso non dover aggiungere altro se non che mi sbatto per eventuali "inutility" ..... ma anche dagli errori si può imparare qualcosa che avvicini al "corretto" (poi ciò è relativo a ciò che un individuo crede in senso generale verso tutte le cose/situazioni.......).

Tornando all'informatica ..... sono appassionato. ricordo programmazione 65C02 ; ove poche istruzioni in più creavano in Apple ][e di mio frate delle performance non indifferenti.

Perciò non mi va il "generic".

I Want Only Perfectly optimized systems ..............

Buon Tuttto a Tuttti (Egregio Djinnz non inc***i con me stavolta ) .... la prego.

Ho cercato di parlare in modo sincero al100%.

Chiudo il Thread..... però se volete continuiamo pure a dialogare.

Io desidero solo imparare... anche perchè (con questo non voglio creare pietà..... ma un medico poichè ho un enfisema bolloso polmonare e devo andare in giro con O2 a 10 l/min sotto esercizio , 3 l/min in riposo e 4 l/min +§VT (=ventiloterapia a 11 Cm H2O)) non penso star qui tanto

sarà sollievo per molti ... vabbè......

però io adoro questo sistema..perchè per me è troppo Geniale!!!!!!!!!

Vi Auguro Buona e se .... possibile "Ottima" Vita.

Ok..... mo mi aspetto di tutto e di più ma se me lo merito ... fa niente.....

prendo tuttto quel che mi accade per imparare  :Wink: 

Ciao Sabayonino.......

Se posso permettermi ..... Ciao DjinniZ.

and God Bless You eternally  !!!!!!!!!!!!!!!!

----------

## djinnZ

Non è questione di chiudere, è che quanto detto a suo tempo resta perfettamente valido, visto che non ci sono state modifiche di rilievo nelle binutils. Sarebbe buona cosa riportare questa discussione sul forum internazionale o comunque far capire ai signori devel quanto possa essere dannosa la disinformazione ... ma al momento non sono dell'umore appropriato (pigrizia).

Dico solo che  mi sono stancato di ripetere che il mio tono è sempre scherzoso, raramente sono grave, e quelle rare volte lo dico "badate che adesso parlo sul serio".

Non è il caso di ripetere ed appropriarsi di un contributo di qualcuno che non bazzica più il forum.

Se non fossimo vicini al natale direi che sabayonino ha acquisito molto ai miei occhi, ma dato che da oggi è ufficialmente partito lo stramaledetto natale (con san Nicola si prepara l'albero e con l'immacolata, in terre civilizzate, si prepara il presepe che va tolto all'epifania) non lo dico.  :Twisted Evil: 

Più seriamente, giusto una parentesi momentanea poi torno a fare il cretino, è veramente squallido trovarsi di fronte a simili bufale.

E ribadisco, stavolta in tono più grave, il c******e all'indirizzo del tuo conoscente, augurando a gente come lui una atroce e lunga agonia.

Se sono fatte con intenzione simili bufale sono criminali, se sono fatte per idiozia... beh siamo veramente mal messi. 

Vediamo di capire perchè:

Ormai ci si avvia verso una certa stabilità di -O3 per gcc ma fino ad un paio d'annetti fa c'era il rischio di dover reinstallare manualmente l'intera toolchain (su hardened vale ancora per quel che so) con tutte le rogne che implica (di fatto ci si può trovare di fronte ad un compilatore impazzito che non genera più codice valido al punto da non poter neppure ricompilare se stesso, o meglio quella piccola sua parte che serve poi a compilare il resto).

Immaginiamo che -O3 sia pienamente stabile ma con il gcc 4.10 i devel, bontà loro, decidano di introdurre -O4 aggiungendo -momit-leaf-frame-pointer (che unitamente a -fomit-frame-pointer è noto far danno) sicuramente con faranno altro che aggiungere al famoso 

```
if (optimize >= 3)

    {

      flag_inline_functions = 1;

      flag_unswitch_loops = 1;

      flag_gcse_after_reload = 1;

      /* Allow even more virtual operators.  */

      set_param_value ("max-aliased-vops", 1000);

      set_param_value ("avg-aliased-vops", 3);

    }
```

un

```
if (optimize >= 4)

    {

      flag_omit_leaf_frame_pointer = 1;

    }
```

Viene da se che il classico CFLAGS="-O9 -fomit-frame-pointer -pipe" (si sa che -fomit-frame-pointer sui sistemi 64 multilib è quasi scontata) diventerà di fatto CFLAGS="-O3 -momit-leaf-frame-pointer -fomit-frame-pointer -pipe" con tutti i casini del caso (e la mia goduria nel vedere i devel bestemmiare in enochiano alle prese con un milione di segnalazioni bug fasulle, non riesco ad essere serio troppo a lungo).

Oppure nel caso del linker potrebbe essere introdotto un -Wl, -O2 che corrsiponde a "-Wl,-O1 -Wl,--sort-common" (noto per essere fonte di instabilità).

Tira tu le somme. Non è altro che un modo per complicare la vita al passaggio di versione e per rendere le distribuzioni "from scratch" meno affidabili agli occhi dei profani.

Interessante che da una ricerca su internet mi pare che la cosa parta dal mondo android/RH/oracle-java dove c'è una forte tendenza a mantenere ambienti di sviluppo legacy solo per non affrontare la riscrittura più rigorosa di codice balordo.

Peraltro c'è da dire che, in italia soprattutto, RH si impone in ambiti aziendali proprio grazie al supporto legacy per assurdi dinosauri (la mia procedura di contabilità è un esempio, richiede il vecchio threading e l'accesso diretto ad usb abbandonati in libc dieci anni or sono, tanto per non renderla utilizzabile al di fuori dell'immondizia farraginosa col cappello rosso).

A suo tempo (quando ancora frequentavo i lug) ho incontrato un sacco di gente che snobbava gentoo perché non era poi così performante e stabile. Il problema è che dei cosiddetti esperti (c******i) spacciavano binari compilati con -march variabili a caso (e sappiamno che non è bene) e compilati con le dipendenze più atroci immaginabili e possibilmente replicate.

Ci credo che non andava.

Quanto a - -Wl,-z,now aggiungo, giusto per esser chiaro che con alcuni "programmi" (proprietari o binari) potrebbe dare problemi non includendo link non immediatamente disponibili (ma semmai disponibili in un secondo tempo) e potrebbe creare alcuni fastidi nei casi di dipendenza circolare. Oltre a rallentare il linking (ci metti un poco in più per compilare).

Quindi è da usare con "judicio"... e moto utile se si ha un programma che si blocca per segfault senza apparente motivo.

(per esempio potrebbe servire alle bestie incivili che come me tra hardenizzazione e -g0 -Wl,-S il debug se lo possono scordare)

Rinnovo la richiesta ai signori moderatori... tanto per ordine e perché non mi va di ripetere quello che è già stato detto. (ma anche perché mi piace sfottere)

E rinnovo la mia domanda... vediamo se una volta tanto c'è qualcuno che si degna di rispondermi...

----------

## ciro64

Grazie.... quanto scritto mi piace.

Comunque allora da quel che apprendo, nelle LDFLAGS di default essendoci "-W,-O1 -Wl,--sort-common -Wl,--as-needed" sarebbe equivalente a "-Wl,-O2 -Wl,--as-needed" ?

Conseguentemente riguardo questo punto ho quindi scritto un'informazione "ridondante / inutile".

Tornato per ora  "alla base" ovvero LDFLAGS sono nuovamente quelle di default con l'aggiunta di --hash-style=gnu che secondo una discussiona passata in questo forum, veniva considerata poter dare qualche beneficio a livello di performances senza però essere considerata una flag "pericolosa" (Non trovo la discussione, comunque era un' esternazione di !Equilibrium, che a quel tempo, essendo proprio alle "primissime armi con Gentoo", lo ritenni una persona affidabile nei suoi consigli.

Riguardo RH & Son's beh io Fedora l'ho piallata e non voglio nulla che abbia a che fare con systemd. Nella mia ignoranza mi sembra abbastanza intuitivo, più semplice e soprattutto veloce OpenRC (che so alcune altre distro hanno bandito dai loro sistemi fra le quali mi pare anche Slackware).

(scusate questo piccolo off topic riguardo gli init systems).

Riguardo GCC ho visto che per ora oltre al -O3 c'è il - Og ed il -Ofast (che sarebbe la somma di -O3 -ffast-math (di cui ho sempre letto.... anzi lo diceva gcc stesso essere "pericolosa" soprattuttto tenerla di default e difatti solo pochi  ebuilds la utilizzano).

Per ora .... Buon Tutto Egregi  :Smile: 

----------

## djinnZ

Non hai capito. Sembrerebbe solo una informazione ridondante ma in futuro potrebbe avere gravi ripercussioni.

Ora come ora -O2 o -O1 sono la stessa cosa ma un domani -O2 potrebbe semplicemente voler dire non ottimizzare od attivare ottimizzazioni "pericolose", anche senza preavviso.

Per ora valuta se disabilitare il supporto al debugging e se cambiare hash style.

Su x86 ed x64 sembra che non abbia alcun impatto negativo verificato anche se... non ricordo dove ... avevo letto di qualche problema legato alla convivenza di binari con hash gnu e non (quindi emerge -e @world o lascia perdere). Se vedi che jdk o qualcosa del genere si inpunta... beh un sospetto lo avrai.

E ricorda che ovviamente i binari non dovrebbero essere esportabili verso altri sistemi (se non mi sbaglio su un BSD non dovrebbero funzionare direttamente non ricordo quale, per quale versione e se era verificato o solo un sospetto).

Anche io alle prime armi trovai l'indicazione di -O9 per gcc ed avevo pensato ad una estensione non documentata (ed altamente sperimentale ovviamente) poi leggendo ho semplicemente scoperto che era una idiozia (e chiedendo conferma in chat m'hanno fatt'a munnezza). E ricordo di aver stramaledetto l'imbecille che aveva scritto il suggerimento idiota.

Se vuoi far la prova con -Ofast e sostieni che tutto sommato non porta guai... stai facendo una affermazione discutibile (forse balorda ma... è sempre tutto relativo e da verificare) ... se proponi al prossimo di usare una opzione riservati a futuri sviluppi, ignoti, sei solo un imbecille.

Per esempio non so se abbiano cambiato il gcc per impostare -O con un valore maggiore od uguale a 4 per -Ofast o se la scelta di utilizzare una simile formula non sia stata motivata dal sospetto che una moltitudine di fessacchiotti potrebbero aver impostato -O9 e pertanto partire con le bestemmie perché il nuovo gcc funziona male.

Sarebbe interessante andare a verificare. Ora non ho tempo. Forse in futuro. O forse qualcuno vuol andare a vedere basta fare un ebuild gcc unpack e cercare il file giusto.

----------

## ciro64

Difatti sto tornando tornando "alla base" senza agggiungere le cosiddette "flags esotiche" (really inutility).

Tanto per dirne una concreta ho errori di compilazione riguardo mesa (in pratica ogni versione, con problemi per quanto possa capirne relative a "egl" (gegl ?!?)"

Comunque sto tornando col mio emerge -e world (per fortuna ho una cpu veloce quindi vabbè..... vedrò aumentare un po' la bolletta dell'ENEL per sto mese .... ma pace......tanto regali di natale non ne ho da fare..... posso permettermelo  :Razz: )

E dato che a sua volta gegl ha le sue dipendenzae e USE, sto cercando di risolvere questo problema per conto mio prima di "didimoclastizzare" ulteriormente nel forum".

Quindi..... in primis riporto il sistema "sfoltite le USE dannose" a "default" (tranne qualche opzione in più per la mia cpu "Haswell").

E Sarò ben "guardingo" incontrando in futuro proposte di opzioni "esotiche (scusa se ripeto di nuovo questa parola)".

E farò leggere questo thread a chi mi ha dato indiazioni con "leggerezza insostenibile" .....   :Evil or Very Mad:  (hehe stavolta mi arrabbio pure io  :Smile: )

Ciao Egregio.

Mai far qualcosa senza prima comprendere (salvo beh .... rari eccezionali casi in cui non si dovesse aver altra via che andare alla "SperInDio"); il sunto dei tuoi mesaggi è lampante e lo ritengo assolutamente giusto.

----------

