Articles of gcc

Impostazione di GCC 4.2 come compilatore predefinito su Mac OS X Leopard

Sono sicuro che ci deve essere un modo per farlo. Come probabilmente saprai, le ultime versioni di Xcode (e in effetti penso che tutte le versioni di Xcode) su Leopard vengano fornite con GCC 4.0.1 e GCC 4.2. GCC 4.0.1 è il compilatore di sistema predefinito mentre GCC 4.2 è un compilatore opzionale che puoi […]

Etichette in assemblaggio in linea GCC

Nella mia continua sperimentazione con l’assemblaggio in linea di GCC, ho riscontrato un nuovo problema relativo alle etichette e al codice inline. Considera il seguente semplice salto: __asm__ ( “jmp out;” “out:;” : : ); Questo non fa nulla se non saltare all’etichetta. Così com’è, questo codice si compila bene. Ma se lo si inserisce […]

Che cosa fa / D_XOPEN_SOURCE do / mean?

Recentemente ho incontrato del codice che gcc non compilerebbe senza questo argomento. Ho controllato la pagina man di gcc, ma non ho trovato questa opzione specifica. Ho trovato XOPEN_SOURCE , ma c’era poca spiegazione su ciò che fa. Qualcuno può elaborare per favore? So che -D_XOPEN_SOURCE può essere impostato su valori diversi, ad esempio 400 […]

Quando è necessario usare use flag -stdlib = libstdc ++?

Quando è necessario usare usa flag -stdlib=libstdc++ per il compilatore e il linker quando si compila con gcc? Il compilatore usa automaticamente libstdc ++? Sto usando gcc4.8.2 su Ubuntu 13.10 e vorrei usare lo standard c ++ 11. Ho già passato -std=c++11 al compilatore.

GNU C ++ come controllare quando -std = c ++ 0x è in effetto?

Il mio compilatore di sistema (gcc42) funziona bene con le funzionalità di TR1 che desidero, ma provo a supportare versioni di compilatore più nuove rispetto ai sistemi, cercando di accedere alle intestazioni TR1 e #error che richiede l’opzione -std = c ++ 0x a causa di come si interfaccia con la libreria o con qualche […]

Qual è la differenza tra -rpath e -L?

gcc e ld forniscono molti modi per specificare un percorso di ricerca per le librerie, tra cui i -rpath e -L . Le manpage non rivelano differenze tra questi due flag, dicendo in pratica che ogni flag aggiunge una libreria al percorso di ricerca della libreria. Tuttavia sembra strano che entrambe le bandiere facciano esattamente […]

Collegamento a versioni di simboli precedenti in un file .so

Utilizzando gcc e ld su x86_64 linux ho bisogno di collegarmi a una versione più recente di una libreria (glibc 2.14) ma l’eseguibile deve essere eseguito su un sistema con una versione precedente (2.5). Dal momento che l’unico simbolo incompatibile è memcpy (che richiede memcpy@GLIBC_2.2.5 ma la libreria che fornisce memcpy@GLIBC_2.14), vorrei dire al linker […]

gcc: perché il flag -lm è necessario per colbind la libreria matematica?

Ho appena scoperto che il flag -lm è richiesto da gcc per compilare un programma che fa riferimento a una funzione dalla libreria matematica. Mi chiedo il motivo per cui un flag esplicito di collegamento non è necessario durante la compilazione di programmi contenenti altre librerie come la libreria di orari. Se scrivo un programma […]

Come impostare il percorso di runtime (-rpath) di un eseguibile con gcc in Mac OSX?

Voglio impostare su Mac OSX il percorso di runtime di un eseguibile (per il linker) al momento della compilazione, in modo tale che le librerie condivise in posizioni non standard vengano trovate dal linker dinamico all’avvio del programma. Sotto Linux questo è ansible con -Xlinker -rpath -Xlinker /path/to (o usando -Wl,-rpath,/path/to ) e in Solaris […]

Come specificare il percorso della libreria condivisa non predefinita in GCC Linux? Ottenere “errore durante il caricamento delle librerie condivise” durante l’esecuzione

C’è un portatile su cui non ho privilegi di root. sulla macchina ho installato una libreria usando configure –prefix=$HOME/.usr . dopo di ciò, ho ottenuto questi file in ~/.usr/lib : libXX.so.16.0.0 libXX.so.16 libXX.so libXX.la libXX.a quando compilo un programma che richiama una delle funzioni fornite dalla libreria con questo comando: gcc XXX.c -o xxx.out -L$HOME/.usr/lib […]