Comment installer un programme Windows (écrit en C) téléchargé à partir de GitHub?

44

J'ai téléchargé un programme simple de Windows mort de GitHub ( ce si elle est pertinente). Je l'ai téléchargé au format ZIP, mais je ne sais pas comment l'installer. C'est écrit en C, je pense. Ai-je besoin d'un compilateur? (Visual Studio?) Y a-t-il quelque chose de simple qui me manque?

Josh Friedlander
la source
9
Désolé, c'est évidemment un problème majeur de noob que j'ai. Comment? Il n'y a pas de fichier exécutable.
Josh Friedlander
6
Vous avez probablement besoin du SDK Windows et des en-têtes C associés pour compiler le programme. Normalement, les dépendances sont mentionnées et les instructions de compilation sont incluses dans le fichier Lisez-moi. Dans ce cas, ni l’un ni l’autre n’est inclus, vous devez donc demander au propriétaire du dépôt / à l’auteur du projet d’obtenir les informations pertinentes.
Larssend
7
Vous avez besoin d'un compilateur. Je voudrais tendre la main au développeur et demander comment le construire. Par exemple, le logiciel Linux fourni en tant que source inclut des instructions de construction, mais je ne vois rien sur son Github.
LawrenceC
12
Vous n'avez pas téléchargé de programme, vous avez téléchargé la source du programme et, oui, vous devez d'abord le compiler. À en juger par le makefile, vous devrez construire quoi que ce soit dans MINGW.
Mokubai
21
voici l'exécutable github.com/renatosilva/winutils/releases
barlop

Réponses:

29

Github est principalement utilisé par les programmeurs pour collaborer à des projets. L'option 'Download ZIP' télécharge une copie du code source sur votre ordinateur. Ce habituellement 1 ne contient pas une copie des fichiers exécutables utilisables / binaires compilés (c. -à- ; fichiers exe)

Releases , est une fonctionnalité de Github destinée à l’envoi de logiciels aux utilisateurs finaux (qui ne sont généralement pas intéressés par le codage proprement dit). Les versions sont accompagnées de notes de publication et de liens permettant de télécharger le logiciel ou le code source. C’est le premier endroit où vous devriez vérifier les fichiers binaires .

Dans votre cas, la page des versions propose des téléchargements et des fichiers d'installation.

Cependant, de nombreux projets n’auront aucune version (en particulier pour Windows), auquel cas vous pouvez effectuer l’une des opérations suivantes:

  1. Rechercher des fichiers binaires ailleurs sur Internet. Habituellement, les moteurs de recherche comme DuckDuckGo (ou Google , si vous préférez) trouveront facilement ce que vous voulez. Essayez de chercher <application name> for Windowsou <application name> exe.

  2. Compilez-le vous-même. Vous devez avoir au moins quelques connaissances de base du langage de programmation pour pouvoir le faire. Là encore, les moteurs de recherche peuvent être extrêmement utiles. Essayez de chercher compile <application name> on Windowsou MinGW compile <application name>.

    Ici, je vais passer en revue les bases de la compilation des utilitaires pour Widnows:

    • Télécharger MinGW . Personnellement, je préfère ce paquet car il vient avec boost (utilisé par plusieurs applications) et un shell cool. Il est également livré avec git, ce qui peut s'avérer très utile si vous souhaitez compiler des fichiers hébergés sur Github ou d'autres référentiels de contrôle de version Git sans avoir à télécharger séparément le code source.

    • Exécutez les commandes suivantes dans cmdou powershell:

      • cd c:\sources\hello: Modifiez le répertoire pour indiquer où se trouve le ou les fichiers source.
      • g++ helloworld.cpp -o helloworld.exe: voici helloworld.cpple nom du fichier source principal et helloworld.exele nom de l'exécutable compilé.
      • Au cas où vous deviez compiler plusieurs fichiers, listez-les avant le -ocommutateur:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • Ce sont les instructions pour C ++. Si vous utilisez des applications programmées en C, l’extension de fichier sera .cau lieu de .cppet vous devriez utiliser la gcccommande au lieu de g++. Le reste est plus ou moins identique
      • Notez que vous devrez peut-être spécifier plus d'arguments de ligne de commande pour compiler un exécutable qui fonctionne correctement. La page du projet aura généralement ces détails.
      • Vous souhaitez probablement aussi vous pencher sur les makefiles. Ce message Stack Overflow concerne les makefiles en général, et celui-ci nous explique comment les utiliser avec MinGW. Si un projet contient un fichier make, essayez-le avant de compiler manuellement le source.
      • Vous devriez maintenant pouvoir courir helloworld.exe.
    • Remarque: la plupart des projets sont livrés avec un fichier README. Veuillez faire ce que le nom implique, ces fichiers contiennent des informations importantes sur la compilation et l’exécution de logiciels et, en les lisant, vous évitez beaucoup de problèmes inutiles.

1 Remarque: Il peut parfois exister un dossier appelé binparmi les fichiers téléchargés, qui devrait contenir des exécutables / fichiers binaires utilisables

Voir aussi Cygwin et GOW si vous voulez des utilitaires de ligne de commande GNU / Linux sous Windows. Je fais un peu la dernière version de quelques executables utiles disponibles en téléchargement ici .

Pour en savoir plus:
http://www.mingw.org/wiki/MinGW_for_First_Time_Users_HOWTO
https://gcc.gnu.org/onlinedocs/index.html#dir
https://stackoverflow.com/questions/22873884/how-do-i -run-configure-with-mingw

Rahuldottech
la source
Merci, c'est une excellente réponse, et je l'ai changée pour qu'elle soit marquée comme définitive. (J'avais précédemment modifié ma question pour préciser que c'était ce que je cherchais, mais pour une raison quelconque, BoundaryImposition l'a modifiée.)
Josh Friedlander
Je ne pense pas que cela satisfasse à la demande de prime d'Aibobot, cependant, mais c'est entre vous et elle / lui.
Josh Friedlander
2
@JoshFriedlander Heureux d'être d'aucune aide! J'ajouterai d'autres réponses à la réponse plus tard ... Oui, je discutais avec JourneymanGeek (Aibobot), il va attendre quelques jours pour que de nouvelles réponses apparaissent à la surface.
rahuldottech
1
Ce projet n'en a peut-être pas, mais notez que la plupart des projets auront probablement des dépendances , ce qui signifie que si vous suivez la route de compilation, vous devrez peut-être localiser les bibliothèques dont dépend le logiciel, les télécharger et les installer ( ou les compiler aussi). Ce n'est généralement pas aussi simple que de lancer le fichier makefile; certains d'entre eux peuvent même avoir d'autres scripts de compilation tels que cmake, configure script, etc.
jrh
2
Le processus est-il vraiment aussi simple dans la plupart des cas? Quelle fraction des utilitaires github nécessite une connaissance beaucoup plus grande pour les compiler que celle décrite précédemment?
Gaazkam
87

Vous regardez autour de vous et trouvez le programme d'installation sur la page de publication . Bien sûr, vous pouvez compiler la source, mais je ne pense pas que ce soit ce que vous voulez.

Compagnon Geek
la source
49
D'accord. Si vous devez demander, vous ne voulez pas compiler à partir des sources.
coup de tonnerre
10
Si vous devez le demander, vous ne devriez probablement pas installer de logiciel disponible uniquement au
format
11
Je suis enclin à être d'accord avec @jpaugh. Bien qu'il soit très possible et parfois nécessaire de compiler à partir des sources, ce n'est pas quelque chose que vous pouvez simplement demander en demandant "comment construire un programme C" de manière générique. Il y a juste trop de variance. Certains programmes chanceux sont aussi simples que "compiler ces fichiers". D'autres ont besoin de makefiles. Certains ont besoin de dépendances pour être téléchargés en premier. Le processus d'installation pour la construction peut être compliqué et n'est pas nécessairement convivial. Mais surtout, vous voulez trouver un fichier dans le projet qui explique comment construire, car les spécificités dépendent du projet.
Kat
35
@jpaugh - Je dirais que vous avez une bien meilleure chance d'installer un logiciel malveillant en téléchargeant un fichier exécutable - le logiciel malveillant est rarement une source ouverte.
Namey
3
En supposant que vous puissiez réellement lire la langue. Je compile régulièrement des choses sur Linux et je ne peux / ne lis aucune des sources. Même si je pouvais, je ne vais pas passer en revue chaque.single.line.
Journeyman Geek
66

Les fichiers .c et .h sont du code source C.

Vous devrez installer un compilateur C tel que Visual Studio, tcc ou quelque chose de similaire, charger le projet, puis le compiler pour l'exécuter.

À défaut, le projet a une page de publication ( ici ) qui vous donnera accès à une version précompilée pour vous faire gagner du temps et des efforts.

Fazer87
la source
14
S'il devait le compiler, il serait généralement expliqué dans un fichier Lisez-moi, ce que vous ne mentionnez même pas qu'il devrait rechercher. Il est censé aller à la page de publication, ce n'est pas seulement "à défaut (installer un compilateur), qu'il devrait aller à la page de publication"
barlop le
3
Mingw est également populaire.
Zan Lynx
1
Un projet spécifique est généralement conçu pour être utilisé avec un ensemble spécifique d’outils de compilation (appelé "toolchain"), c’est-à-dire qu’il est normalement mentionné dans un fichier lisez-moi (dans les projets UNIX et multiplate-forme, il est généralement appelé BUILD ou INSTALL). . Dans les projets maintenus de manière moins stellaire, ou dans des projets d'environnements ne comportant que quelques chaînes d'outils bien connues, l'utilisateur est supposé deviner à partir du format et / ou du contenu des fichiers de projet.
ivan_pozdeev
TCC? Vraiment? Tu n'étais pas sérieux, n'est-ce pas?
Yashas
18

Cette réponse abordera la question générale de la création d’une application Windows source uniquement (en C). Si vous êtes chanceux comme l'OP, vous pourrez peut-être trouver des fichiers binaires précompilés.

La première chose à prendre en compte ici est qu'il n'y a pas un seul moyen de créer une application à partir des sources. Il y a environ autant de variantes que de projets. Cela dit, voici quelques étapes générales:

  1. Si vous avez de la chance, le projet fournira des instructions de construction, généralement dans le READMEfichier. De temps en temps, il peut également y avoir un INSTALLfichier ou une autre documentation disponible. Si ceux-ci sont disponibles, suivez les instructions. Ils sont votre meilleur pari.

    Comme d’autres l’ont dit, il est malheureusement très difficile de reconstruire les étapes de construction requises sans instructions. Cependant, nous pouvons au moins faire un effort au mieux, ce qui fonctionnera pour la plupart des projets simples.

  2. En l'absence d'instructions, le prochain point de contact est de vérifier quel outil de construction est requis.

    1. Si vous trouvez un fichier avec une extension .slnou .vcxproj, il s’agit probablement d’un projet MSBuild / Visual Studio. Téléchargez une copie de Visual Studio Community ou Express (pour C ++), ouvrez-y le fichier de projet et cliquez sur le bouton de lecture de la barre d'outils (ou utilisez le menu de génération).

    2. Si vous trouvez un Makefile, cela va probablement nécessiter make. Mais c’est là que les choses deviennent encore plus difficiles, car de nombreux systèmes indépendants et incompatibles sont utilisés make.

      1. Comme il est destiné à Windows, il utilisera probablement MinGW . Téléchargez-en une copie, lancez MSYS à partir du menu Démarrer, accédez cdau répertoire contenant votre projet, puis exécutez-le make.

      2. Dans les rares cas où il s’agit plutôt de Cygwin (il n’existe malheureusement pas de moyen facile de le savoir, mais si MinGW génère une erreur liée à "posix", il s’agit là d’un pari décent), vous devrez installer Cygwin à la place. Malheureusement, cela ne crée pas de fichiers binaires Windows natifs - vous devrez lancer le programme via Cygwin à chaque fois.

    3. L'outil de génération peut être un script personnalisé portant le nom build.batou similaire. Dans ce cas, vous devrez soit l'ouvrir et voir ce qu'il contient, soit essayer de l'exécuter et voir quelles sont les erreurs. Si vous l'ouvrez et que vous voyez des mentions sur GCC, remontez au 2.2.1. Étape MinGW mais exécutez le script personnalisé à la place de make.

  3. Il est possible qu'il n'y ait pas d'outil de construction du tout. Si tout ce que vous rencontrez est un fichier .cou un .cppfichier, il est probablement assez simple pour que vous puissiez effectuer une compilation directe. Encore une fois, ce sont presque toujours MinGW , alors téléchargez-le, lancez le shell MSYS, accédez au répertoire et appelez-le gccou g++au besoin - par exemplegcc -o program.exe program.c

  4. Il est possible qu'aucune de ces solutions ne fonctionne. Si vous recevez des messages d'erreur à n'importe quelle étape, ils peuvent contenir un indice sur ce qui manque. Une possibilité est que vous manquiez de certains frameworks ou bibliothèques requis - si vous le souhaitez, vous pouvez essayer de les télécharger et de les ajouter à votre environnement de construction, mais ce n'est généralement pas un processus trivial et comporte de nombreuses variantes. façon de les couvrir dans une réponse.


Glossaire

Construire des outils

Un outil de construction vous permet de construire un projet avec très peu de commandes. Pour la plupart des projets comportant plusieurs fichiers sources, un outil de construction sera impliqué quelque part. Il existe plusieurs outils de construction, mais les plus courants sont les suivants:

  • make , utilisé partout sous Linux et de plus en plus répandu sous Windows. Les projets utilisant makepeuvent généralement être identifiés par la présence d'un Makefile.

  • MSBuild est spécifique à Windows et est généralement associé à Visual Studio. Ceux-ci seront généralement accompagnés d'un *.slnou d' un *.vcxprojfichier.

Toolchains

Un toolchain est le compilateur et les outils de support. Tout comme les outils de construction, il en existe plusieurs, et ils sont généralement utilisés avec l'un des outils de construction.

  • MSVC est la chaîne d'outils de Microsoft. C'est la chaîne d'outils la plus courante pour le développement natif Windows. Cela est généralement utilisé avec le système MSBuild et les générations sont généralement créées via Visual Studio. Cependant, les projets MSVC modernes peuventMakefile également être utilisés .

  • GCC ( MinGW ) est un port de GCC pour Windows. Habituellement utilisé avec make. Si le projet cible Windows de manière native et qu'il en possède un Makefile, c'est probablement pour MinGW-GCC.

  • GCC ( Cygwin ) crée un environnement compatible POSIX. Cela vous permet de compiler directement la plupart des programmes écrits pour Linux ou Unix et de le faire fonctionner directement sous Windows. Plus récemment dans Windows 10, Bash sur Ubuntu sous Windows est une alternative. GCC est généralement utilisé en conjonction avec make.

Cadres et bibliothèques

Les bibliothèques sont des ensembles de codes réutilisables écrits par d'autres personnes, sur lesquels de nombreux programmes s'appuient pour éviter de réinventer la roue. Vous devez disposer de ces dépendances pour pouvoir construire le projet. Si vous avez de la chance, ils seront inclus dans votre téléchargement initial, mais ce n'est pas toujours le cas.

Les frameworks sont en réalité une collection de bibliothèques. De nombreux projets utilisent un seul framework dont vous aurez également besoin. Ceux-ci viennent souvent avec leur propre système de construction aussi, mais les lister tous serait impossible.

La partie la plus difficile concerne les dépendances supplémentaires du framework et de la bibliothèque. Si, par exemple, le projet utilise Qt - alors vous aurez besoin de tout ce gâchis pour le construire correctement. Il s’agit d’une tâche gigantesque et, à moins que vous n’ayez de l’expérience préalable, il est probablement préférable de demander à d’autres personnes de vous aider directement ici.

Bob
la source
1
Dans ce cas particulier , le fichier makefile vous donne un bon indice que c'est pour vous comme pour la première ligne MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill
1
celui-ci mérite la prime imo
tbodt