programme non open source sous linux

programme non open source sous linux - C - Programmation

Marsh Posté le 11-12-2013 à 18:01:39    

bonjour,  
 
Je souhaites créer d'ici quelques temps un programme NON open source.
Je souhaitais le faire disponible pour linux, mais je ne sais pas si c'est possible?
 
En effet chaque distribution linux a l'air de compiler différemment le code source fourni, et donc si je fourni un exécutable, il ne va pas fonctionner sur toutes les distributions linux je suppose?
 
merci pour votre réponse
 
Nicolas

Reply

Marsh Posté le 11-12-2013 à 18:01:39   

Reply

Marsh Posté le 11-12-2013 à 23:04:33    

Ca fait longtemps que je n'ai pas compilé d'exécutable sur Linux, mais je crois que ça dépend surtout des dépendances et l'architecture du système. Il me semble que les exécutables x86 compilés en C fonctionnent sur tous les Linux x86 si les dépendances sont bien résolues. Par-contre il ne faudra pas espérer faire fonctionner un exécutable AMD64 sur du x86, ou un exécutable x86 sur du powerPC.
 
Généralement lorsque qu'un utilitaire est dispo sur Linux, Les versions précompilés sont téléchargeables sont : soit sous forme d'archive .tar.gz qui contient un exécutable x86, soit sous forme de package *.deb, *.rpm etc. spécifique à une distribution.

Reply

Marsh Posté le 12-12-2013 à 00:29:04    

Merci beaucoup pour ton message!
 
ça va m'aider.
 
par contre est ce que si je le compile pour une certaine version du kernel linux, ou des librairies linux, l'utilisateur devra avoir les même versions?
 
(ça fait longtemps que j'ai pas mis le nez là dedans et je ne comprenais pas très bien ces histoires de versions)

Reply

Marsh Posté le 12-12-2013 à 11:02:11    

Pour connaître les dépendances d'un exécutable il y a la commande ldd :
Par exemple un "ldd /bin/echo" sur mon système donne :

Code :
  1. $ ldd /bin/echo
  2. linux-gate.so.1 =>  (0xb7761000)
  3. libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb759f000)
  4. /lib/ld-linux.so.2 (0xb7762000)


 
Lors de l'exécution du programme, le système va chercher des fichiers nommés "linux-gate.so.1", "libc.so.6" et "ld-linux.so.2" dans les entrepôts de dépendances configurés sur le système.
 
Si je fais "ls -lh /lib/i386-linux-gnu/libc*", j'ai ça :

Code :
  1. -rwxr-xr-x 1 root root 1,7M sept. 30 16:38 /lib/i386-linux-gnu/libc-2.15.so
  2. ...
  3. lrwxrwxrwx 1 root root   12 sept. 30 16:38 /lib/i386-linux-gnu/libc.so.6 -> libc-2.15.so


 
"libc.so.6" est un lien symbolique vers "/lib/i386-linux-gnu/libc-2.15.so"
Si une lib d'une certaine version mineure ou majeure peut se substituer à la version "standard du système", le lien symbolique doit exister. Sinon il est possible de créer un lien symbolique à l'emplacement de l'exécutable utilisateur, faire pointer ce lien vers une lib et modifier/créer LD_CONFIG_PATH pour que le système utilise le lien symbolique. Après il faut tester le programme pour voir si la lib est compatible et qu'il n 'y a pas de problèmes.


Message édité par czh le 12-12-2013 à 11:02:46
Reply

Marsh Posté le 14-12-2013 à 19:37:36    

merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed