2013-02-18 5 views
5

Ho cercato e cercato ma non ottengo le informazioni che desidero veramente. Qualcuno può spiegare, nel modo più completo e fondamentalmente possibile, come viene compilato il codice Gtk + quando si scrive in C, usando GCC, su Linux. Ci sono cose come backtick, "c99" e .o file che non capisco affatto.Come compilare C e Gtk + con GCC su Linux?

Apprezzerei anche qualsiasi risorsa per l'apprendimento del codice Gtk +. Tutte le fonti che ho trovato sono per versioni 2.x, ma penso che 3.6 sia la versione corrente.

Vorrei ribadire che sono interessato solo al codice C. Per favore non provare a spiegarmi i vantaggi di C++ o C#, ho letto tutti loro. Sono qui per C. Grazie!

+2

Ho paura che questa domanda sia troppo ampia e mescoli argomenti diversi. Compilare il codice C su un Unix è un argomento in sé. La compilazione del codice Gtk è solo una versione specifica di tale attività. Probabilmente dovresti semplicemente prendere un libro introduttivo su C. La compilazione del codice Gtk diventerà evidente dopo. – pmr

+2

La domanda è perfettamente valida, ma non posso credere che qualcuno non possa ottenere queste informazioni di base: http://www.google.com/search?q=compiling+gtk restituisce documentazione per GTK + 2 nella prima riga e per GTK + 3 nel secondo. – ntd

risposta

15

Per cominciare, scrivi il tuo codice C, dì "hello_world_gtk.c", e poi lo compili e lo colleghi a Gtk, usando i flag appropriati del compilatore e del linker. Questi flag ti vengono dati dallo strumento pkg-config. Per ottenere i flag di compilazione necessarie, si chiama quello strumento con:

 
pkg-config gtk+-2.0 --cflags 

Per le bandiere di collegamento:

 
pkg-config gtk+-2.0 --libs 

Gli apici inversi consentono di ottenere l'output di pkg-config e passarlo su come argomenti a gcc:

 
gcc `pkg-config gtk+-2.0 --cflags` hello_world_gtk.c -o hello_world_gtk `pkg-config gtk+-2.0 --libs` 

Ma non è necessario utilizzare i backtick. Puoi semplicemente copiare & incollare i flag manualmente se vuoi.

Per Gtk 3, sostituire "2.0" con "3.0". Se pkg-config segnala che non è stato possibile trovare il pacchetto, non hai installato il pacchetto di sviluppo Gtk come offerto dalla tua distribuzione Linux.

Se generalmente non si capisce come si compila qualcosa nei file oggetto e quindi si collega, non si dovrebbe iniziare con Gtk, ma con C semplice. Una volta acquisita familiarità con le basi assolute della compilazione e del collegamento, è possibile passare alle applicazioni Gtk.

+0

L'ho ottenuto compilato e funzionante, Qualcosa non funzionava con la mia installazione. Anche se sono stato in grado di installare 2.0, non una versione 3.x. –

2

Come altri hanno detto, la tua domanda è eccessivamente ampia. Si chiede dei backtick (sintassi di base della shell), quali sono i file ".o" (programmazione di base) e la programmazione GTK (programmazione piuttosto avanzata).

Ma per rispondere meglio che posso, e supponendo che basta un singolo file sorgente, utilizzano

gcc -Wall -Wextra -std=c99 `pkg-config --cflags --libs gtk+-2.0` example.c -o example 

dove "example.c" è il nome della sorgente. Ecco la ripartizione:

  • Utilizzare le bandiere "-Wall" e "-Wextra" in modo da poter vedere tutte le avvertenze (e risolvere).

  • Utilizzare il flag "std" per impostare il dialetto C. Ce ne sono diversi e gcc ha il supporto totale o parziale per la maggior parte di essi. Leggi le pagine man o le pagine info per maggiori informazioni. Usare "c99" come sopra non è una cattiva scelta.

  • E utilizzare pkg-config e la sostituzione di comando (ad esempio, backtick) per impostare le librerie e include. Nota che puoi fare entrambe le cose contemporaneamente, anche se molte persone lo usano due volte per due versioni backticked di pkg-config. I backtick sostituiscono l'output del comando all'interno dei tick. Prova a eseguire pkg-config all'interno dei backquotes da solo sulla riga di comando e vedrai cosa fa.

Sfortunatamente, non ci sono molte risorse per 3.x codice GTK e la maggior parte di esso è ancora 2.x basato. Dovrai solo ricorrere alle mailing list gtk o al manuale di riferimento.

Per quanto riguarda GTK 3.x, il motivo per cui non è possibile compilare è probabile che la distribuzione sia basata su GTK 2.x. Le distribuzioni più recenti possono avere GTK 3.x nei loro repository.

0

mio Makefile:

LDLIBS = -lcurl -lpthread `pkg-config --cflags gtk+-2.0` `pkg-config --libs gtk+-2.0` 
+0

nice, funziona anche per gtk 3.0: LDLIBS = -lcurl -lpthread 'pkg-config --cflags gtk + -3.0'' pkg-config --libs gtk + -3.0' – petermeissner