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

C Discussion :

Développement sous Windows 10 pour du code C qui doit tourner sous Linux


Sujet :

C

  1. #1
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut Développement sous Windows 10 pour du code C qui doit tourner sous Linux
    Bonjour

    Je dois faire du Développement sous Windows 10 pour du code C qui doit tourner sous Linux (librairie GNU).

    Je n'ai rien vu dans https://c.developpez.com/cours/

    J'ai tenté d'installer https://www.msys2.org/ mais dans C:\msys64 j'ai des répertoires vides comme par exemple C:\msys64\clang64\bin C:\msys64\mingw64\bin

    J'aimerais avoir un tutoriel fiable.

    Ensuite, j'aimerais que cela s'interface avec Visual Studio Code. Mais déjà j'ai les bonnes librairies linux et le bon compilateur installé c'est bien.


    Cordialement
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Si tu n'as pas d'ordinateur sous Linux, tu devrais utiliser WSL https://docs.microsoft.com/en-us/windows/wsl/about
    https://docs.microsoft.com/en-us/win...install-manual
    Après faut pas croire que ce soit difficile ou miraculeux d'écrire un code qui compilera sous LInux... suffit d'utiliser la lib standard (ce qui devrait être le niveau 0 de la bonne pratique imo), et en cas de libs externes, s'assurer qu'elles soient compatibles Linux (ce que la majorité des trucs sérieux sont).
    Si tu dois absolument faire un appel système, il faut faire une indirection qui choisira le bon call système selon la plateforme.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre éclairé Avatar de Bayard
    Inscrit en
    Juin 2002
    Messages
    859
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 859
    Points : 714
    Points
    714
    Par défaut
    J'ai un serveur sous Linux accessible via SSH. Pas de souci. Je ne désire pas installer une VM.

    Je souhaite juste développer sous Windows 10 pouvoir notamment faire des tests unitaires et ensuite, je mettrais mon code sur le serveur pour une intégration complète.

    Bref, comment avoir les répertoires liées aux librairies standards existantes sous Linux sous Windows ?
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Bayard Voir le message
    Bref, comment avoir les répertoires liées aux librairies standards existantes sous Linux sous Windows ?
    • Soit tu pries pour que les dépendances externes existent sur l'ordinateur qui va exécuter ton logiciel
    • Soit tu mets dans ton projet les dépendances, que tu vas compiler pour chaque plateforme (Windows, Linux, 32 bits, 64 bits, ...) et ensuite lier la version de ton exécutable (*) avec la bonne version des dépendances.
    • Soit tu livres les dépendances externes avec ton logiciel sous forme de bibliothèques dynamiques (fichiers .dll/ .so) et que la version de ton exécutable (*) prendra les bonnes bibliothèques

    Pour tout ce qui est standard, tu t'en fiches de où cela se trouve (juste dans les paramètres de ton projet), juste se renseigner sur les différences et éventuellement mettre en place du code variable avec #if, #else, #elseif et petits frères.

    * : tu vas avoir 1 exécutable par plateforme

  5. #5
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Salut,

    Avec cygwin il y a normalement tout ce qu'il faut : https://cygwin.com/

  6. #6
    Membre émérite
    Avatar de skeud
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2011
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2011
    Messages : 1 091
    Points : 2 724
    Points
    2 724
    Billets dans le blog
    1
    Par défaut
    Sinon si tu es à l'aise avec Qt, tu peux l'utiliser, comme ça tu as accès à tout un tas de librairie sympa qui sont crossplateforme.
    Pas de solution, pas de probleme

    Une réponse utile (ou +1) ->
    Une réponse inutile ou pas d'accord -> et expliquer pourquoi
    Une réponse à votre question


  7. #7
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par skeud Voir le message
    Sinon si tu es à l'aise avec Qt, tu peux l'utiliser, comme ça tu as accès à tout un tas de librairie sympa qui sont crossplateforme.
    Qt c'est C++ (ici c'est du C). Et utiliser une librairie d'IHM pour faire de simples tests unitaires...

    Citation Envoyé par Bayard Voir le message
    Je ne désire pas installer une VM.
    C'est bien dommage car c'est quand-même bien pratique et me semble pile poil adapté à ton besoin. Sinon te connecter à ton Linux par ssh semble aussi assez pertinent. Ca te permettrait de faire ton développement complet (tests unitaires et la suite) directement sur l'OS cible. Parce que c'est quand-même dommage d'essayer d'avoir un truc "ressemblant" à Linux alors que tu as un vrai Linux utilisable.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 630
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 630
    Points : 10 556
    Points
    10 556
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    C'est bien dommage car c'est quand-même bien pratique et me semble pile poil adapté à ton besoin. Sinon te connecter à ton Linux par ssh semble aussi assez pertinent. Ca te permettrait de faire ton développement complet (tests unitaires et la suite) directement sur l'OS cible. Parce
    que c'est quand-même dommage d'essayer d'avoir un truc "ressemblant" à Linux alors que tu as un vrai Linux utilisable.
    Le terme technique c'est compilation "cross-platform"

    En gros tu as 2 ordinateurs :
    • ordi A avec lequel tu vas développer
    • ordi B qui va exécuter ton programme

    Et tu vas mettre en place 1 chaîne de compilation ("toolchain" en anglais, ) avec des outils comme CMake et 1 gros EDI (IDE en anglais)
    Tu peux éventuellement arriver à télécharger ton exécutable résultat sur l'ordi B (la cible) à chaque compilation.

  9. #9
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 115
    Points : 32 967
    Points
    32 967
    Billets dans le blog
    4
    Par défaut
    Pour avoir fait de la compile crossplatform il y a quelques années, c'était un peu chiant.
    WSL simplifie très largement ce process et devrait être la nouvelle façon de faire par défaut, simplement.
    WSL c'est pas une VM, c'est super light et peut être un simple terminal sur ton écran si tu lances un Linux sans UI.
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  10. #10
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par foetus Voir le message
    Le terme technique c'est compilation "cross-platform"

    En gros tu as 2 ordinateurs :
    • ordi A avec lequel tu vas développer
    • ordi B qui va exécuter ton programme
    Oui, je connais la cross-compilation. C'était très certainement assez utile à une certaine époque mais ajourd'hui, avec les VM en tous genres, je pense le truc plutôt obsolète.
    Déjà pour faire une cross-compilation tu dois installer sur ton ordi A les librairies qui seront utilisées sur l'ordi B lorsque le programme s'exécutera. Et comme dit Bousk, c'est "un peu" chiant. Tu développes, tu compiles (à grand peine car il faut d'abord avoir bien géré lesdites librairies), puis pour tester tu vas sur l'ordi B et... ça marche pas. Et rebelote. C'est un peu le "tuc-tuc" de l'informatique non?

    Perso j'ai un PC assez puissant et je lui ai mis différentes VM (du W7, du W10, du XP (oui du XP car j'ai une vieille imprimante et le driver ne tourne que sous XP mais ça marche nickel), différents Linux, etc). Bon les VM il faut les installer mais une fois fait, une sauvegarde du disque système et c'est réglé (je peux la raz à volonté). Et ensuite tout développement peut être fait sur (ou "pour") la machine adéquate. Mais effectivement il faut un host physique assez costaud (surtout quand je lance ma W10 virtuelle !!!). Mais avec ça, la cross-compilation devient un peu inutile.
    WSL je connaissais pas (suis allé voir) mais pourquoi pas...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  11. #11
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Oui, je connais la cross-compilation. C'était très certainement assez utile à une certaine époque mais ajourd'hui, avec les VM en tous genres, je pense le truc plutôt obsolète.
    Déjà pour faire une cross-compilation tu dois installer sur ton ordi A les librairies qui seront utilisées sur l'ordi B lorsque le programme s'exécutera.
    Je ne dirais pas que c'est "plutôt obsolète". C'est tout de même la méthode pour compiler des applications qui s'exécuteront sur plateforme embarqué (notamment Arduino, mais aussi tout plein d'autres) ou sur les consoles. C'est aussi la méthode, même si c'est extrêmement enrobé, pour compiler sur mobiles (Android et iOS).
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

Discussions similaires

  1. Quels sont les outils de développement sous Linux ?
    Par Community Management dans le forum Linux
    Réponses: 120
    Dernier message: 11/10/2015, 11h17
  2. Réponses: 5
    Dernier message: 27/03/2012, 10h43
  3. TCN - MVB - Développement sous Linux
    Par nbrau dans le forum Développement
    Réponses: 0
    Dernier message: 10/12/2008, 11h01
  4. Réponses: 6
    Dernier message: 05/07/2006, 17h13

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