# compilation source objective-c avec gcc



## mulot (12 Février 2003)

J'ai fait un tout petit programme en objective-c nommé foo.m.
Au début il faisait juste un return 0; et ne posait aucun problème lors de sa compilation gcc
Après quoi j'ai rajouté un NSLog(@"toto"); et là lors de la compilation au linkage avec 'ld' il me rejète avec une erreur comme quoi il ne connait pas le symbole __NSLog.

J'ai essayé de rajouter un path (-L) vers l'endroit ou il me semblait y avoir la Lib Foundation mais sans succès.

Mon but en fait était de compiler un prog cocoa avec gcc directement sans passer par le project builder.
Est ce que quelqu'un aurait déjà une expérience la dessus ?


----------



## PowerMike (13 Février 2003)

Ça doit venir du fait que tu ne link aucun framework avec ton fichier. Il faudrait en effet compiler contre le framework Foundation minimum. Enfin je te dis àa mais la ligne de commande j'aime suffisament pas ça pour m'en passer sans problème. Une idée cerait de regarder l'output de Project Builder quand il compile, comme ça t'aura les commandes qu'il utilise et les paramètres.


----------



## mulot (14 Février 2003)

et as tu une idée de comment l'on fait avec gcc pour linker avec la lib foundation, j'ai essayé des gcc -lObjC sans succès.
Sinon j'avais regardé le output de project builder mais il n'affiche pas les commandes gcc même en mode verbose, à moins que je n'aye pas regardé au bon endroit.

merci pour  ton aide.


----------



## molgow (14 Février 2003)

En tapant "man gcc" dans un terminal, je viens d'y lire ceci :

</font><blockquote><font class="small">En r&eacute;ponse &agrave;:</font><hr />
Note that you must link with the library libobjc.a to make an Objective-C program work.

[/QUOTE] 

Peut-être que ça peut t'aider à résoudre ton problème.


----------



## mulot (14 Février 2003)

en faisant un -lObjC je link avec la libobjc.a normalement. Mais j'ai toujours la même erreur.


----------



## SuperCed (14 Février 2003)

Normal, il faut que tu ajoutes le framework appkit, ou alors Cocoa.


----------



## mulot (14 Février 2003)

De ce que j'ai compris le appkit n'est nécessaire que pour la programmation d'interface graphique.
Or mon prog de test ne contient que un NSLog et aucun appel de la librairy graphique.

Peut être me manque t'il un linkage avec le framework cocoa en effet. Mais alors comment fais je ? un -lcocoa (je ne peux pas tester en ce moment).

Grand jeux concourt voici mon programme de souvenir, le gagnant est celui qui arrive à le compiler avec gcc :

#import &lt;Foundation/Foundation.h&gt;

int main(int argc, char **argv)
{
 NSLog(@"toto");
 return 0;
}


----------



## SuperCed (14 Février 2003)

Le mieux, tu fais ca avec Project Builder et tu regardes dans la fenetre Build:Terminal de PB. Il y a exactement la commande qu'il a lance au terminal.

PB n'est qu'une interface de gcc.


----------



## grenoble (14 Février 2003)

Il faut que tu le lie avec le framework Foundation.framework, normalement présent dans /System/Library/Frameworks


----------



## grenoble (14 Février 2003)

j'oubliais:

pour inclure ce framework au niveau de gcc, tu ajoutes l'argument:
-framework Foundation
tout simplement.

j'ai gagné quoi à ton concours?


----------



## mulot (18 Février 2003)

Je te remercie c'était bien cela.
Tu as gagné toute ma reconnaissance...


----------

