# Probleme de compilation avec GCC



## job2221 (5 Octobre 2010)

Bonsoir,

J'ai un soucis avec mon ggc qui ne veux pas compiler la fonction "open" 
il me dit qu'il ne la connait pas alors que j'ai bien inclus "unistd.h" dans mon header

j'ai pensé qu'il fallait peut etre que je reinstalle ma libc mais je vois pas trop comment faire...

Si quelqu'un a une meilleur solution ou qques explication je suis preuneur.

Merci d'avance


----------



## Nyx0uf (5 Octobre 2010)

Il dit quoi gcc exactement ?

Et d'ailleurs quand on regarde le man, faut inclure :


```
#include <fcntl.h>
```


----------



## job2221 (5 Octobre 2010)

euh jai ajouté fcntl.h apparemment tu as raison , il ne me dit plus rien pour open mais la c'est la fonction write ... implicit declaratation of function write ...


----------



## Nyx0uf (5 Octobre 2010)

```
ssize_t write(int fildes, const void *buf, size_t nbyte);
```

Ton appel à write correspond bien au prototype dessus ?


----------



## job2221 (5 Octobre 2010)

Oui oui l'appel est juste.


----------



## Nyx0uf (5 Octobre 2010)

On peut voir ton code si il est pas long, et ta ligne de compilation ?


----------



## job2221 (5 Octobre 2010)

mon code c'est : 
write(1, "ok", 2);

et ma ligne de compil :
gcc -ansi -pedantic - Wall - W - Werror


----------



## ntx (5 Octobre 2010)

Et si tu castes ton "ok" en "const void*", car à la la base ce doit être un "const char*".


----------



## job2221 (5 Octobre 2010)

finalement ca a fini par marcher

le fichier unistd.h que j'avais n'étais pas bon.
je sais pas comment ni pourquoi mais le fait est que je l'ai remplacé par un autre et ca a fonctionné.

Merci pour votre aide en tout cas


----------



## tatouille (6 Octobre 2010)

tu sais ce que veut dire pedantic?  et as tu reellement besoin -ansi en 2010  


on ne remplace pas ses headers standard  ou a part quand on develope sur implementation de libc mais toi... 

#include <unistd.h> il y a une difference entre #include <unistd.h> et #include "unistd.h"

un petit stdio ne ferait pas de mal, enfin si tu veux creer des fat binaries car les "symbol decorations" (inline assembler) se trouvent la.


----------

