2012-04-18 7 views
5

Desidero lasciare che il mio gcc aggiunga sempre alcuni flag per impostazione predefinita, esiste un modo pulito per farlo?Aggiungere alcuni flag per impostazione predefinita a gcc (preferibilmente utilizzando il file delle specifiche)

Fondamentalmente ho alcune bandiere che passo ogni volta che invoco gcc, ad esempio (ma non limitato a) -g (in modo che abbia informazioni di debug).

Ci sono diverse soluzioni, ma sono brutti:

  1. alias g++=..., ma non mi piace questo approccio;
  2. Scrivere uno script che avvolga il g ++, simile a 1;
  3. ...

io preferirei solo modificando il file specs in modo che tutto è senza soluzione di continuità.

+0

possibile duplicato di [Come impostare il file di specifiche predefinite di gcc 4.3?] (Http://stackoverflow.com/questions/5778449/how-to-set-gcc-4-3-default-specs -file) –

risposta

1

Il problema con la modifica del file delle specifiche è che si cambia idea su qualche opzione, non è possibile annullarla dalla riga di comando; devi andare a modificare il file delle specifiche. Devi anche ricordare di rimodificare il nuovo file delle specifiche quando aggiorni il compilatore.

Inoltre, quanto spesso si esegue il compilatore dalla riga di comando? So che quasi l'unica volta che lo faccio direttamente è quando ho bisogno di hackerare una linea di comando temporaneamente e non posso essere disturbato a capire come correggere le opzioni del compilatore nel makefile, quindi copio la linea di compilazione dal output di make e quindi eseguire il compilatore. Un problema con alias è che non funzionerà all'interno di un makefile. Quindi, per me, il problema si riduce a garantire che le opzioni del compilatore vengano utilizzate in ogni makefile.

+1

Ci sono casi di utilizzo legittimi per questo oltre a chiamarlo dalla riga di comando. Potresti voler insegnare al driver GCC dove trovare una libc alternativa, ad esempio ... o intestazioni alternative. Oppure aggiungi intestazioni "predefinite". – 0xC0000022L

7

Eseguire strace gcc | grep specs per vedere dove sta cercando il file delle specifiche, quindi andare lì ed eseguire gcc -dumpspecs > specs. Ora hai un file delle specifiche pronto per la modifica. Utilizzare questo riferimento: https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html

+3

È necessario aggiungere 2> & 1 subito prima di '|', poiché strace restituisce lo stderr. Ho testato l'idea sulla mia VM aggiungendo un file di specifiche modificato nella posizione suggerita dall'output di strace e quindi eseguendo g ++ -v su un cpp fittizio, osservando le opzioni previste. – Syncopated

+0

Puoi mostrarci un esempio? Per esempio. come aggiungere un'opzione linker predefinita, è sempre lì? O un compilatore C++ o un'opzione del compilatore C? – Calmarius

+0

Questo file delle specifiche è piuttosto complesso al primo sguardo. Con molti% mark e {} s puoi mostrarci un esempio su come aggiungere opzioni predefinite a linker, compilatore C o compilatore C++? – Calmarius

Problemi correlati