IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Administration système Discussion :

cross platform windows/linux


Sujet :

Administration système

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut cross platform windows/linux
    Bonjour a tous amis développeurs.

    Je me présente je suis stagiaire dans une boite de sécurité informatique ou nous développons actuellement une solution de transmission sécurisée de données bref pas besoin d'en dire plus sinon le boss va hurler :p.

    Pour rentrer plus dans le vif du sujet, disons que le code source est déjà développé et adapté a windows.

    C'est là ou j'interviens, en effet, j'ai besoin actuellement d'adapter une bibliothèque windows à linux pour en faire plus tard une bibliothèque dynamique partagée.

    J'aurais donc besoin de vos connaissances en la matière (je ne suis vraiment pas habitué au développement sous linux) et précisément en ce qui concerne l'adaptation de certaines structures windows à linux (ex : LoadLibrary() sous windows équivaut à dlopen() sous linux ...etc)

    Ainsi vous l'aurez compris j'ai un tas d'instructions windows du genre à traduire sous linux donc s'il existe un tuto ou un site faisant référence aux traductions de ces instructions ou un professionnel parmi vous je suis preneur !!

    N'hésitez pas à me poser des questions si je n'ai pas été assez clair.

    Merci et bonne journée à tous

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    Citation Envoyé par yachiro Voir le message
    Bonjour a tous amis développeurs.
    [...]
    Pour rentrer plus dans le vif du sujet, disons que le code source est déjà développé et adapté a windows.
    [...]
    J'aurais donc besoin de vos connaissances en la matière (je ne suis vraiment pas habitué au développement sous linux) et précisément en ce qui concerne l'adaptation de certaines structures windows à linux (ex : LoadLibrary() sous windows équivaut à dlopen() sous linux ...etc)

    N'hésitez pas à me poser des questions si je n'ai pas été assez clair.

    Merci et bonne journée à tous
    Je répondrais par
    Par définition un "BON" code source est portable nativement.

    donc 1. revoir le code

    dans quelques rares fonctions qui interrogent directement le système, et encore uniquement si c'est le cas de façon très profonde, donc pas simplement les appels aux librairies systèmes, là le code doit être adapté.
    autrement dit la solution est de contourner le problème en prévoyant dès le code cette possibilité.

    mais plus précisément et plus concrètement la meilleure solution est d'écrire un source capable de s'adapter lors de la compilation à son système cible.
    Je n'ai jamais testé personnellement, les développeurs en diront plus sur le sujet, mais le principe c'est par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    toto.c            = corp de programme
    lib_perso_linux.h = include linux
    lib_perso_win.h   = include windows
    lib_perso_both    = include portable
    Makefile
    et on lance le makefile avec un paramètre qui défini la cible...et on obtient les binaires pour windows ou pour linux

    donc puisque tu as déjà tous le nécéssaire pour windows, il te manquera effectivement une ou plusieurs libs pour linux et un makefile permettant le portage.

    voilà pour le principe et ça peut s'appliquer à tous langage compilé .

    je ne saurai entrer d'avantage dans le détail... je laisse donc le soin aux plus pros en dev de compléter ça...

  3. #3
    Membre actif
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Bonjour,

    Merci d'avoir répondu aussi vite.

    L'ennui est que je ne suis pas l'auteur du dit code source sous windows donc pour ce qui est de la remarque sur l'efficacité d'un code quand il dépend le moins possible de l'OS utilisé bah je la ferai au boss .

    Cependant, comme vous l'aurez compris je ne peux ou du moins je ne suis pas autorisé à modifier ce code là, uniquement à adapter le fichier .c correspondant à la bibliothèque du programme windows afin qu'elle puisse correspondre à linux (pour en faire une .so après mais ca c'est pas ce qu'il y a de plus difficile!).

    Ce qui me bloque vraiment et pourtant j'ai fais beaucoup de recherche à ce sujet sans jamais trouvé une vraie réponse (c'est peut etre qu'il n'y en a pas et dans ce cas je suis un peu mal barré :o) c'est comment changer cette bibliothèque (du moins quelles instructions changer et quels sont leurs équivalents linux) sans avoir pour autant à la réécrire dans son intégralité..

    Merci.

  4. #4
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par yachiro Voir le message
    Cependant, je ne suis pas autorisé à modifier ce code là, uniquement à adapter le fichier .c correspondant à la bibliothèque du programme windows afin qu'elle puisse correspondre à linux.

    Ce qui me bloque vraiment, c'est comment changer cette bibliothèque (du moins quelles instructions changer et quels sont leurs équivalents linux) sans avoir pour autant à la réécrire dans son intégralité..
    Je resume : tu as un fichier C avec un ou plusieurs fichiers d'en-tete (.h), qui sont du code specifique pour Windows, et tu cherches comment porter cette librairie a moindre frais sous Linux.

    Etape 1 : identifier ce qui va poser probleme.
    Reponse simple : tous les appels de fonction aux librairies windows. Donc si on suppose que tu connais le C, ca te permet d'etablir une liste des fonctions dont tu devras trouver l'equivalent.

    Etape 2 : trouver les equivalents.
    Rien d'automatique ici : tu vas devoir prendre les docs MSDN, comprendre ce que font les fonctions, et ensuite chercher l'equivalent Linux. Par exemple pour LoadLibrary, comment as-tu trouve dlopen ?

    Etape 3 : les fonctions qui n'ont pas d'equivalent
    Il va t'en manquer quelques unes, probablement parce qu'elles n'ont pas d'equivalents. Dans ce cas, la seule solution qu'il te reste est de re-ecrire la fonction a la main, ou de changer le code Linux pour qu'il fasse ce que tu souhaites.

    Compilation, edition de lien, et hop, ca roule. Ou presque

    Pourquoi ou presque : tu fais quoi de ton code : est-ce que tu fais deux fichiers source distincts, ou bien un seul plus complexe ?
    Si tu en fais deux, alors tu auras le probleme de la maintenance et de l'evolution : ton programme sera fige dans sa version actuelle, a moins de gros efforts pour porter les modifications sur l'autre fichier - et il en est de meme pour les bugs.

    Si tu as un seul fichier, avec par exemple des sections #ifdef WIN32, alors tu vas te rendre compte que cela n'est possible que si le code est tres tres semblable - par exemple un appel de fonction qui differe de temps en temps. Si c'est tout ton code qui differe, oublie cette solution.

    La vraie solution propre, c'est de faire du code portable pour toutes les cibles visees. Cela suppose de ne pas s'appuyer sur les fonctionalites proposes par l'un ou l'autre des OS, et donc de redevelopper la partie Windows.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

  5. #5
    Membre actif
    Homme Profil pro
    Architecte réseau
    Inscrit en
    Juin 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte réseau
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 29
    Par défaut
    Ouep merci beaucoup je m'y suis déjà mit je bouffe de la doc msdn concernant la gestion des threads et j'essaie de trouver les équivalents linux.

    Merci à tous pour votre aide je pense revenir très bientôt si jamais j'ai besoin de vous pour l'édition des liens

  6. #6
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Par défaut
    Citation Envoyé par yachiro Voir le message
    Ouep merci beaucoup je m'y suis déjà mit je bouffe de la doc msdn concernant la gestion des threads et j'essaie de trouver les équivalents linux.
    Tant que tu n'as pas regle la question de comment architecturer le code, ca ne sert pas a grand chose de connaitre les equivalents des fonctions.
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Cross-compilation Windows -> Linux
    Par sagopa dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 02/08/2011, 13h30
  2. GCC windows linux cross compiler
    Par sybe30 dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 22/01/2010, 17h48
  3. cross compiling host = windows / linux & target = solaris sur sparc 64
    Par indepthsight dans le forum Autres éditeurs
    Réponses: 0
    Dernier message: 07/01/2008, 21h07
  4. Réponses: 1
    Dernier message: 20/11/2007, 19h45
  5. [Free Pascal] Cross-compiling Windows -> Linux : comment faire ?
    Par zafo dans le forum Free Pascal
    Réponses: 5
    Dernier message: 01/03/2007, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo