PDA

View Full Version : Objective-C su Ubuntu 13.10


pierre2290
17-11-2013, 11:33
Quando compilo un programma scritto in Objective-C con Code::Blocks alla fine viene visualizzato il seguente messaggio: "Fatal error: Foundation/Foundation.h: File o directory non esistente".

pierre2290
17-11-2013, 13:05
non hai specificato correttamente gli include path.

Dove vanno inseriti gli include path?

pierre2290
17-11-2013, 17:24
Dopo aver inserito il path viene visualizzato il seguente messaggio:
" The compiler's setup (Objective-C Compiler) is invalid, so Code::Blocks cannot find/run the compiler.
Probably the toolchain path within the compiler options is not setup correctly?!
Goto "Settings->Compiler and debugger...->Global compiler settings->Objective-C Compiler->Toolchain executables" and fix the compiler's setup.
Skipping...".

pierre2290
17-11-2013, 17:39
te lo sta dicendo lui quello che devi fare... vai in quel menu e controlla la toolchain selezionata... presumo tu voglia utilizzare la GNU... verifica che il compilatore è installato su ubuntu per prima cosa..

il compilatore è installato.

pierre2290
17-11-2013, 17:53
e allora seleziona la toolchain da quel menu.

La toolchain l'ho selezionata ma continua a visualizzarmi il messaggio su citato.

pierre2290
18-11-2013, 08:40
se compili da riga di comando, funziona?

Anche da riga di comando non funziona.

pierre2290
18-11-2013, 13:57
se non dai piu' dettagli e' difficile dire qualsiasi cosa, lo sai? che vuol dire non funziona? hai appena detto che il compilatore e' installato.

Dopo aver settato la toolchain non riesco a compilare il programma e viene visualizzato il messaggio di settaggio della toolchain.

pierre2290
18-11-2013, 23:04
compilare da riga di comando intendo da bash...

Anche provando da terminale non riesco a compilare in objective c

pierre2290
19-11-2013, 08:26
re-iteriamo il processo... se non mi dai qualche dettaglio del perché non funziona da terminale è impossibile aiutarti.

hai detto che hai installato il compilatore.. come fai a saperlo?

http://wiki.codeblocks.org/index.php?title=Installing_Objective-C_Compiler

Ho seguito la procedura di installazione descritta sul sito di codeblocks

pierre2290
19-11-2013, 10:43
non credo che ci sia scritto come installare GCC.

scrivi gcc -v e vedi cosa ti esce.

Mi visualizza il seguente messaggio: "Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.8/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.8.1-10ubuntu8' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-i386 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-i386 --with-arch-directory=i386 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-targets=all --enable-multiarch --disable-werror --with-arch-32=i686 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.8.1 (Ubuntu/Linaro 4.8.1-10ubuntu8) ".

pierre2290
19-11-2013, 14:08
gcc e' installato, quindi devi poter essere in grado di compilare un hello world da riga di comando in objective-c..

Se provo a compilare un programma da riga di comando mi visualizza il seguente messaggio:"Prova.m:1:34: fatal error: Foundation/Foundation.h: File o directory non esistente
#import <Foundation/Foundation.h>
^
compilation terminated."

pierre2290
19-11-2013, 14:47
stai includendo quel Foundation.h? non sono un esperto di Objective-C, ma non mi sembra un include standard. che file e'?

Ho incluso la libreria Foundation.h

pierre2290
19-11-2013, 17:30
e allora devi fornire esplicitamente il path di quell'include con -I oppure modificare la variabile d'ambiente che contiene gli include per objective-C in cui GCC va a leggere i file e di cui non ricordo assolutamente il nome. una volta fatto quello, configura per bene il tuo progetto in code blocks e riprova da li.

Ho riconfigurato gli include path in code blocks ma mi visualizza il messaggio di errore in quanto non trova la libreria Foundation

pierre2290
19-11-2013, 18:32
Foundation.h e' un include file. non e' una libreria. serve al compilatore per conoscere i nomi dei simboli contenuti all'interno della libreria. se non e' un include file standard, devi fornire esplicitamente il path dove il compilatore deve andare a cercare suddetto file. puoi farlo o configurando la variabile d'ambiente <something>INCLUDE oppure fornendo esplicitamente il path tramite -I.

una volta compilato, il linker avra' bisogno della libreria statica o dinamica su cui andare a fare il link dei simboli che hai introdotto (deve prendere il binario compilato da qualche parte...). Anche qui, dovrai linkare esplicitamente col parametro -l<nome libreria> e specificare il path da qualche parte.

Ho modificato l'include path di Foundation.h e ho anche modificato la libreria statica e dinamica ma ho sempre lo stesso risultato.

pierre2290
19-11-2013, 19:26
... che vuol dire che hai modificato la libreria statica e dinamica?

... che include path hai modificato?

Ho cercato il path dove si trovano le librerie e il foundation e ho modificato le variabili globali.

pierre2290
20-11-2013, 10:49
come le hai modificate? sta diventando un interrogatorio... se vuoi farti aiutare devi essere più collaborativo... :asd:

che vuol dire che hai modificato le librerie statiche e dinamiche?

Ho modificato i valori delle librerie e dell'include cosi come visualizzato dall'immagine seguente:

https://mega.co.nz/#!FhBS3TZB!SVNOIm1t_qRWMoT1g3Ly9lEh6S4cqb92J_iLeuyryvY