Pages: [1]   Go Down
Print
Author Topic: File .h mancante  (Read 1692 times)
0 Members e 1 Utente non registrato stanno visualizzando questa discussione.
Shin
Forumista
***
Offline Offline

Gender: Male
Posts: 822

Io sono ciò che sono per ciò che siamo tutti


WWW
« on: 31-01-2013, 17:06:02 »

Provando a compiare un file sorgente C che include la gtk:

Code:
#include <gtk/gtk.h>

Dando il comando:

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

Mi da il seguente errore:

Quote
error: gtk/gtk.h: No such file or directory

perchè non riesce a trovare il file gtk.h, che si trova nella mia home, in particolare in:

~/gtk/inst/include/gtk-2.0/gtk

quindi dovrei in qualche modo dirgli che se la deve andare a prendere da questa cartella, ma come?

ho provato a cercare su google ma senza successo
Logged

"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.

L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.

Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."

(Bertolt Brecht)

Collettivo SDAI: collettivosdai.altervista.org, facebook.
Movimento Studentesco Catanese: www.movimentostudentesco.org

https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it

LinuxMint user.
ɹǝǝuıƃuǝsɹǝʌǝɹ
Administrator
God of the Forum
*****
Offline Offline

Gender: Male
Posts: 4.475


Più grande è la lotta, e più è glorioso il trionfo


WWW
« Reply #1 on: 01-02-2013, 02:26:47 »

Le parentesi angolate (< libreria >) servono per specificare di includere un file di intestazione dalla libreria standard.

Per file personalizzati, bisogna usare le virgolette doppie (ad es. supposto che il tuo programma stia nella tua home, perché è da lì che tutti i percorsi relativi saranno calcolati, dovrai scrivere semplicemente
Code:
#include "gtk/gtk.h"
).
Logged

La grande marcia della distruzione mentale proseguirà. Tutto verrà negato. Tutto diventerà un credo. È un atteggiamento ragionevole negare l'esistenza delle pietre sulla strada; sarà un dogma religioso affermarla. È una tesi razionale pensare di vivere tutti in un sogno; sarà un esempio di saggezza mistica affermare che siamo tutti svegli. Accenderemo fuochi per testimoniare che due più due fa quattro. Sguaineremo spade per dimostrare che le foglie sono verdi in estate. Non ci resterà quindi che difendere non solo le incredibili virtù e saggezze della vita umana, ma qualcosa di ancora più incredibile: questo immenso, impossibile universo che ci guarda dritto negli occhi. Combatteremo per i prodigi visibili come se fossero invisibili. Guarderemo l'erba e i cieli impossibili con uno strano coraggio. Saremo tra coloro che hanno visto eppure hanno creduto.

In tutto, amare e servire.

  
                            ن                           
I can deal with ads,
I can deal with buffer,
but when ads buffer
I suffer...

...nutrimi, o Signore, "con il pane delle lacrime; dammi, nelle lacrime, copiosa bevanda...

   YouTube 9GAG    anobii  S  Steam T.B.o.I. Wiki [univ] Lezioni private  ʼ  Albo d'Ateneo Unicode 3.0.1
Usa "Search" prima di aprire un post - Scrivi sempre nella sezione giusta - Non spammare - Rispetta gli altri utenti - E ricorda di seguire il Regolamento
Shin
Forumista
***
Offline Offline

Gender: Male
Posts: 822

Io sono ciò che sono per ciò che siamo tutti


WWW
« Reply #2 on: 01-02-2013, 09:44:03 »

Le parentesi angolate (< libreria >) servono per specificare di includere un file di intestazione dalla libreria standard.

Per file personalizzati, bisogna usare le virgolette doppie (ad es. supposto che il tuo programma stia nella tua home, perché è da lì che tutti i percorsi relativi saranno calcolati, dovrai scrivere semplicemente
Code:
#include "gtk/gtk.h"
).

Lo so ma il problema è che poi a loro volta le librerie gtk/*.h includono altre librerie nella forma <libreria.h>, quindi quello di cui ho bisogno è inglobarle nelle mie "librerie standard"
Logged

"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.

L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.

Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."

(Bertolt Brecht)

Collettivo SDAI: collettivosdai.altervista.org, facebook.
Movimento Studentesco Catanese: www.movimentostudentesco.org

https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it

LinuxMint user.
havoc
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 224


« Reply #3 on: 01-02-2013, 10:40:01 »

Ti puoi rendere conto di quello che sta succedendo guardando cosa ti stampa:
Code:
pkg-config --cflags --libs gtk+-2.0

Credo tu possa risolvere impostando PKG_CONFIG_PATH, suppongo che mettendo ~/gtk/inst/lib/pkgconfig/ funzioni
Logged

Shin
Forumista
***
Offline Offline

Gender: Male
Posts: 822

Io sono ciò che sono per ciò che siamo tutti


WWW
« Reply #4 on: 01-02-2013, 11:41:35 »

Un collega mi ha dato una soluzione temporanea, la scrivo qui se potrebbe servire a qualcuno. Le gtk le ho installate nella cartella gtk della mia home, quindi in /Users/shin/gtk.

Nel mio .bash_profile:

Code:
export GTKOPTS="-I /Users/shin/gtk/inst/include/. -I /Users/shin/gtk/inst/include/./atk-1.0 -I /Users/shin/gtk/inst/include/./atk-1.0/atk -I /Users/shin/gtk/inst/include/./cairo -I /Users/shin/gtk/inst/include/./gail-1.0 -I /Users/shin/gtk/inst/include/./gail-1.0/gail -I /Users/shin/gtk/inst/include/./gail-1.0/libgail-util -I /Users/shin/gtk/inst/include/./gdk-pixbuf-2.0 -I /Users/shin/gtk/inst/include/./gdk-pixbuf-2.0/gdk-pixbuf -I /Users/shin/gtk/inst/include/./gio-unix-2.0 -I /Users/shin/gtk/inst/include/./gio-unix-2.0/gio -I /Users/shin/gtk/inst/include/./glib-2.0 -I /Users/shin/gtk/inst/include/./glib-2.0/gio -I /Users/shin/gtk/inst/include/./glib-2.0/glib -I /Users/shin/gtk/inst/include/./glib-2.0/glib/deprecated -I /Users/shin/gtk/inst/include/./glib-2.0/gobject -I /Users/shin/gtk/inst/include/./gobject-introspection-1.0 -I /Users/shin/gtk/inst/include/./gtk-2.0 -I /Users/shin/gtk/inst/include/./gtk-2.0/gdk -I /Users/shin/gtk/inst/include/./gtk-2.0/gtk -I /Users/shin/gtk/inst/include/./gtk-unix-print-2.0 -I /Users/shin/gtk/inst/include/./gtk-unix-print-2.0/gtk -I /Users/shin/gtk/inst/include/./gtkmacintegration -I /Users/shin/gtk/inst/include/./libexslt -I /Users/shin/gtk/inst/include/./libltdl -I /Users/shin/gtk/inst/include/./libpng15 -I /Users/shin/gtk/inst/include/./libxml2 -I /Users/shin/gtk/inst/include/./libxml2/libxml -I /Users/shin/gtk/inst/include/./libxslt -I /Users/shin/gtk/inst/include/./lzma -I /Users/shin/gtk/inst/include/./pango-1.0 -I /Users/shin/gtk/inst/include/./pango-1.0/pango -I /Users/shin/gtk/inst/include/./pixman-1 -I /Users/shin/gtk/inst/include/./readline -I /Users/shin/gtk/inst/lib/glib-2.0/include -I /Users/shin/gtk/inst/lib/gtk-2.0/include -L /Users/shin/gtk/inst/lib -lgtk-quartz-2.0"

E quando compilo do:

Code:
gcc prova.c -o prova2 $GTKOPT

e funziona alla perfezione. Ovviamente sono ancora alla ricerca di una soluzione un po' più pulita ^^
Logged

"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.

L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.

Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."

(Bertolt Brecht)

Collettivo SDAI: collettivosdai.altervista.org, facebook.
Movimento Studentesco Catanese: www.movimentostudentesco.org

https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it

LinuxMint user.
havoc
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 224


« Reply #5 on: 01-02-2013, 12:52:17 »

Ma la mia non ti funziona? In ogni caso la soluzione pulita sarebbe impostare CFLAGS al risultato di pkg-config --cflags e LDFLAGS al risultato di pkg-config --libs.
In ogni caso poi per eseguirlo ti serve LD_LIBRARY_PATH.

Però se quando hai installato gtk non hai impostato il prefix al configure pkg-config non ti funziona sicuro.
Logged

Shin
Forumista
***
Offline Offline

Gender: Male
Posts: 822

Io sono ciò che sono per ciò che siamo tutti


WWW
« Reply #6 on: 01-02-2013, 14:54:40 »

Ma la mia non ti funziona?


Purtroppo no:

Quote
i686-apple-darwin11-llvm-gcc-4.2: pkg-config: No such file or directory
i686-apple-darwin11-llvm-gcc-4.2: gtk+-2.0: No such file or directory
cc1: error: unrecognized command line option "-fcflags"
cc1: error: unrecognized command line option "-flibs"
« Last Edit: 01-02-2013, 15:04:25 by Shin » Logged

"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.

L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.

Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."

(Bertolt Brecht)

Collettivo SDAI: collettivosdai.altervista.org, facebook.
Movimento Studentesco Catanese: www.movimentostudentesco.org

https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it

LinuxMint user.
havoc
Apprendista Forumista
**
Offline Offline

Gender: Male
Posts: 224


« Reply #7 on: 01-02-2013, 15:10:09 »

Ah, ma non hai pkg-config direttamente! Certo che non ti funziona!
Allora la cosa meno brutta che puoi fare è anziché farti quella variabile enorme con tutte cose mischiate, ti fai un makefile e lì imposti CFLAGS (qui metti tutti i -I) e LDFLAGS (qui metti -l e -L).
Logged

Shin
Forumista
***
Offline Offline

Gender: Male
Posts: 822

Io sono ciò che sono per ciò che siamo tutti


WWW
« Reply #8 on: 01-02-2013, 17:23:03 »

Ah, ma non hai pkg-config direttamente! Certo che non ti funziona!
Allora la cosa meno brutta che puoi fare è anziché farti quella variabile enorme con tutte cose mischiate, ti fai un makefile e lì imposti CFLAGS (qui metti tutti i -I) e LDFLAGS (qui metti -l e -L).

Ma perchè la menu brutta? non c'è una soluzione più efficace? xD comunque non ho idea di come si faccia a fare quello che hai detto ^^
Logged

"Il peggiore analfabeta è l’analfabeta politico. Egli non sente, non parla, nè s’importa degli avvenimenti politici. Egli non sa che il costo della vita, il prezzo dei fagioli, del pesce, della farina, dell’affitto, delle scarpe e delle medicine dipendono dalle decisioni politiche.

L’analfabeta politico è così somaro che si vanta e si gonfia il petto dicendo che odia la politica.

Non sa, l’imbecille, che dalla sua ignoranza politica nasce la prostituta, il bambino abbandonato, l’assaltante, il peggiore di tutti i banditi,
che è il politico imbroglione, il mafioso corrotto, il lacchè delle imprese nazionali e multinazionali."

(Bertolt Brecht)

Collettivo SDAI: collettivosdai.altervista.org, facebook.
Movimento Studentesco Catanese: www.movimentostudentesco.org

https://github.com/ShinDarth
http://shinworld.altervista.org
http://www.openprogrammers.it

LinuxMint user.
Pages: [1]   Go Up
Print
Jump to: