J'ai écris un programme C qui fonctionne sous Linux et *BSD.
Ce programme contient des sections :
#ifdef LINUX
...
#endif // LINUX
#ifdef NETBSD
...
#endif
#ifdef FREEBSD
...
#endif
etc.
car j'utilise des appels systèmes qui ne fonctionnent que selon l'OS.
Pour compiler, j'utilise par exemple la commande suivante :
gcc -o upclient main.c -Wall -DFREEBSD
Mon problème actuel est que je dois compiler sous chaque OS... donc
j'utilise qemu pour les émuler le temps de compiler.
Second problème, si je compile sous FreeBSD 6.x, le binaire ne
fonctionnera pas sous la 4.x voire la 5. Idem pour NetBSD et OpenBSD.
Bref, je ne vais pas installer tous les OS pour compiler une source.
Ma question, y a-t-il moyen de compiler une bonne fois pour toute le
source (sous FreeBSd par ex) et qu'il fonctionne sous n'importe quel
Unix/Linux par la suite ?
david> Emmanuel Dreyfus wrote: david> > Soit dit en passant, gcc définit des symboles pour l'OS: david> > __NetBSD__ sous NetBSD, __FreeBSD__ sous FreeBSD, etc... david> > david> > Pour avoir la liste: david> > cpp -dM /dev/null david> david> ça fait des années que je la cherche celle là !
j'en profite pour faire un peu de pub pour ces pages bien pratiques:
http://predef.sourceforge.net/
-- Alain
On 5 Apr 2006 07:15:49 GMT
david [david] wrote:
david> Emmanuel Dreyfus <manu@netbsd.org> wrote:
david> > Soit dit en passant, gcc définit des symboles pour l'OS:
david> > __NetBSD__ sous NetBSD, __FreeBSD__ sous FreeBSD, etc...
david> >
david> > Pour avoir la liste:
david> > cpp -dM /dev/null
david>
david> ça fait des années que je la cherche celle là !
j'en profite pour faire un peu de pub pour ces pages bien pratiques:
david> Emmanuel Dreyfus wrote: david> > Soit dit en passant, gcc définit des symboles pour l'OS: david> > __NetBSD__ sous NetBSD, __FreeBSD__ sous FreeBSD, etc... david> > david> > Pour avoir la liste: david> > cpp -dM /dev/null david> david> ça fait des années que je la cherche celle là !
j'en profite pour faire un peu de pub pour ces pages bien pratiques: