OVH Cloud OVH Cloud

Cross-compile Linux/*BSD

21 réponses
Avatar
Delf
Bonjour.

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 ?

Merci d'avance.

--
Delf

1 réponse

1 2 3
Avatar
Alain
On 5 Apr 2006 07:15:49 GMT
david [david] wrote:

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
1 2 3