Come installo un programma Windows (scritto in C) scaricato da GitHub?


44

Ho scaricato un semplice programma Windows morto da GitHub ( questo se è rilevante). L'ho scaricato come file ZIP, ma non riesco a capire come installarlo. È scritto in C, penso. Ho bisogno di un compilatore? (Visual Studio?) C'è qualcosa di semplice che mi manca?


9
Mi dispiace, questo è ovviamente un grosso problema di noob che sto avendo. Come? Non ci sono file eseguibili.
Josh Friedlander,

6
Probabilmente avrai bisogno di Windows SDK e delle intestazioni C associate per compilare il programma. Normalmente, le dipendenze sono menzionate e le istruzioni di compilazione sono incluse nel file Leggimi. In questo caso, nessuno dei due è incluso, quindi è necessario chiedere al proprietario del repository / all'autore del progetto di ottenere le informazioni pertinenti.
Larssend,

7
Hai bisogno di un compilatore. Vorrei contattare lo sviluppatore e chiedere come costruirlo. Tipicamente il software Linux, ad esempio, fornito come sorgente include istruzioni di compilazione ma non ne vedo nessuna sul suo Github.
LawrenceC

12
Non hai scaricato un programma vero e proprio, hai scaricato il sorgente del programma e, sì, devi prima compilarlo. A giudicare dal makefile lì dentro dovrai costruire qualunque cosa sia in MINGW.
Mokubai

Risposte:


29

Github è utilizzato principalmente dai programmatori per collaborare a progetti. L'opzione "Scarica ZIP" scarica una copia del codice sorgente sul tuo computer. Questo di solito 1 non contiene una copia dei file eseguibili / binari utilizzabili compilati (es. File exe)

Rilasci , è una funzionalità di Github per la spedizione di software agli utenti finali (che di solito non sono interessati alla codifica effettiva). Le versioni sono accompagnate da note di rilascio e collegamenti per scaricare il software o il codice sorgente. Questo è il primo posto in cui dovresti controllare i binari .

Nel tuo caso, la pagina delle versioni offre download e file di installazione.

Tuttavia, molti progetti non avranno alcuna versione (in particolare non per Windows), nel qual caso è possibile effettuare una delle seguenti operazioni:

  1. Cerca binari altrove su Internet. Di solito i motori di ricerca come DuckDuckGo (o Google , se preferisci) troveranno facilmente ciò che desideri. Prova a cercare <application name> for Windowso <application name> exe.

  2. Compilalo tu stesso. Per poterlo fare devi avere almeno una conoscenza di base del linguaggio di programmazione. Anche in questo caso, i motori di ricerca possono essere di grande aiuto. Prova a cercare compile <application name> on Windowso MinGW compile <application name>.

    Qui analizzerò le basi delle utilità di compilazione per Widnows:

    • Scarica MinGW . Personalmente preferisco questo pacchetto perché viene fornito con boost (utilizzato da diverse applicazioni) e una shell interessante. Viene inoltre fornito git, che può essere super utile se si desidera compilare file ospitati su Github o altri repository di controllo versione Git senza dover scaricare separatamente l'origine.

    • Esegui i seguenti comandi in cmdo powershell:

      • cd c:\sources\hello: Cambia la directory ovunque si trovi / si trovi il / i file sorgente / i.
      • g++ helloworld.cpp -o helloworld.exe: ecco helloworld.cppil nome del file sorgente principale ed helloworld.exeè il nome dell'eseguibile compilato.
      • Nel caso in cui devi compilare più file elencali prima del -opassaggio:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • Queste sono le istruzioni per C ++. Se hai a che fare con applicazioni programmate in C, l'estensione del file sarà .cinvece di .cppe dovresti usare il gcccomando invece di g++. Il resto è più o meno identico
      • Si noti che potrebbe essere necessario specificare più argomenti da riga di comando per compilare un eseguibile che funzioni correttamente. La pagina del progetto di solito avrà questi dettagli.
      • Probabilmente anche tu vorresti sicuramente esaminare i makefile. Questo post di Stack Overflow riguarda i makefile in generale e questo ci spiega come usarli con MinGW. Se un progetto viene fornito con un makefile, provalo prima di compilare manualmente l'origine.
      • Ora dovresti essere in grado di eseguire helloworld.exe.
    • Nota: la maggior parte dei progetti viene fornita con un file README. Si prega di fare ciò che implica il nome, questi file contengono informazioni importanti sulla compilazione e l'esecuzione del software e leggendolo è possibile evitare molte seccature inutili.

1 Nota: a volte potrebbe esserci una cartella chiamata bintra i file scaricati, che dovrebbe contenere file eseguibili / binari utilizzabili

Vedi anche Cygwin e GOW se vuoi utilità da riga di comando GNU / Linux su Windows. Rendo disponibile l'ultima versione di alcuni eseguibili utili per il download qui .

Ulteriori letture:
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-con-minGW


Grazie, questa è un'ottima risposta e l'ho cambiata per essere contrassegnata come definitiva. (In precedenza avevo modificato la mia domanda per chiarire che era quello che stavo cercando, ma per qualche motivo BoundaryImposition l'ha modificata.)
Josh Friedlander,

Non penso che soddisfi la richiesta di generosità di Aibobot, tuttavia, ma è tra te e lei.
Josh Friedlander,

2
@JoshFriedlander Sono contento di essere stato d'aiuto! Aggiungerò altro alla risposta in seguito ... Sì, stavo chattando con JourneymanGeek (Aibobot), aspetterà qualche giorno per far emergere nuove risposte.
rahuldottech,

1
Questo progetto potrebbe non averne nessuno, ma nota che la maggior parte dei progetti avrà probabilmente dipendenze , il che significa che se stai seguendo il percorso della compilazione, potresti dover rintracciare le librerie da cui dipende il software, scaricarle e installarle ( o compilali pure). Di solito non è così semplice come eseguire il makefile; alcuni di essi potrebbero anche avere altri script di build come cmake, configure script, ecc.
jrh

2
Il processo è davvero così semplice nella maggior parte dei casi? Quale frazione di utility github richiede una conoscenza sostanzialmente maggiore per compilarle rispetto a ciò che hai descritto qui?
gaazkam,

87

Ti guardi intorno e trovi il programma di installazione nella pagina di rilascio . Sicuro che potresti compilare la fonte, ma non credo sia quello che vuoi.


49
Concordato. Se devi chiedere, non vuoi compilare dalla fonte.
thunderblaster,

10
Se devi chiedere, probabilmente non dovresti installare software disponibile solo in formato sorgente ...
jpaugh,

11
Sono propenso a concordare con @jpaugh. Sebbene sia molto possibile e talvolta necessario costruire dal sorgente, non è qualcosa che puoi semplicemente chiedere "come faccio a creare un programma C" in modo generico. C'è solo troppa varianza. Alcuni programmi fortunati sono semplici come "compilare questi file". Altri hanno bisogno di makefile. Alcuni hanno bisogno di dipendenze da scaricare prima. Il processo di impostazione per build può essere complicato e non è necessariamente non adatto ai programmatori. Soprattutto, però, vuoi trovare un file nel progetto che spieghi come costruire, perché le specifiche dipendono dal progetto.
Kat,

35
@jpaugh - Direi che hai molte più possibilità di installare malware scaricando un eseguibile - il malware è raramente open-source.
nome

3
Supponendo che tu possa effettivamente leggere la lingua. Compro routinariamente semi su Linux e non riesco / non leggo nessuna fonte. Anche se potessi, non rivedrò every.single.line.
Journeyman Geek

66

I file .c e .h sono codice sorgente C.

Dovrai installare un compilatore C come Visual Studio, tcc o qualcosa di simile, caricare il progetto e quindi compilarlo per eseguirlo.

In caso contrario, il progetto ha una pagina di rilascio ( qui ) che ti darà accesso a una versione precompilata per risparmiare tempo e fatica.


14
Se dovesse compilarlo, di solito sarebbe spiegato in un file Leggimi, che non si menziona nemmeno che dovrebbe cercare. Dovrebbe andare alla pagina di rilascio, non è solo "non riuscire (installare un compilatore), che dovrebbe andare alla pagina di rilascio"
barlop

3
mingw è anche popolare.
Zan Lynx,

1
Un progetto specifico è di solito adattato per l'uso con un set specifico di strumenti di compilazione (chiamato "toolchain") - quale di solito è menzionato in un file readme (in UNIX e progetti multipiattaforma, è convenzionalmente chiamato BUILD o INSTALL) . In progetti non mantenuti in modo stellare, o progetti per ambienti con solo alcune toolchain ben note, un utente dovrebbe indovinare dal formato e / o dal contenuto dei file di progetto.
ivan_pozdeev il

TCC? Veramente? Non eri serio, vero?
Yashas,

18

Questa risposta affronterà la questione generale della creazione di un'applicazione Windows di sola origine (in C). Se sei fortunato come l'OP, potresti essere in grado di trovare file binari precompilati.

La prima cosa da tenere presente è che non esiste un modo unico per creare un'app dalla fonte. Esistono approssimativamente tante variazioni quanti sono i diversi progetti. Detto questo, ecco alcuni passaggi generali:

  1. Se sei fortunato, il progetto fornirà le istruzioni di costruzione, di solito all'interno del READMEfile. Occasionalmente, potrebbe anche essere disponibile un INSTALLfile o altra documentazione. Se quelli sono disponibili, seguire le istruzioni. Sono la tua scommessa migliore.

    Come altri hanno detto, sfortunatamente, è molto difficile ricostruire i passaggi di costruzione richiesti senza istruzioni. Tuttavia, possiamo almeno fare un tentativo del massimo sforzo qui, che funzionerà per la maggior parte dei progetti semplici.

  2. In mancanza di istruzioni, il prossimo porto di scalo è verificare quale strumento di compilazione è necessario.

    1. Se trovi un file con un'estensione .slno .vcxproj, questo è probabilmente un progetto MSBuild / Visual Studio. Scarica una copia di Visual Studio Community o Express (per C ++), apri quel file di progetto e fai clic sul pulsante di riproduzione nella barra degli strumenti (o usa il menu di creazione).

    2. Se trovi un Makefile, questo probabilmente richiederà make. Ma è qui che le cose diventano ancora più difficili, dal momento che ci sono così tanti sistemi indipendenti e incompatibili che usano make.

      1. Dal momento che è destinato a Windows, probabilmente utilizzerà MinGW . Scarica una copia di ciò, avvia MSYS dal menu Start, vai ( cd) nella directory che contiene il tuo progetto ed esegui make.

      2. Nella rara occasione in cui è invece Cygwin (purtroppo non esiste un modo semplice per dirlo, ma se MinGW genera errori con un errore correlato a "posix", questa è una scommessa decente), dovrai invece installare Cygwin . Sfortunatamente, questo non crea binari Windows nativi: dovrai avviare ogni volta il programma tramite Cygwin.

    3. Lo "strumento di costruzione" potrebbe essere uno script personalizzato con il nome build.bato simile. In questo caso, dovrai aprirlo e vedere cosa c'è dentro, oppure provare a eseguirlo e vedere quali sono gli errori. Se lo apri e vedi le menzioni di GCC, torna al 2.2.1. Passaggio di MinGW ma eseguire lo script personalizzato anziché make.

  3. È possibile che non ci sia affatto uno strumento di compilazione. Se tutto ciò che incontri è un singolo .co un .cppfile, probabilmente è abbastanza semplice da poter eseguire una compilazione diretta. Questi sono, ancora, quasi sempre MinGW , quindi scaricalo, avvia la shell MSYS, vai alla directory e invoca uno gcco g++come necessario - ad es.gcc -o program.exe program.c

  4. È possibile che nessuno di questi lavori. Se ricevi messaggi di errore in qualsiasi passaggio, potrebbero contenere un indizio di ciò che manca. Una possibilità è che ti mancassero determinati framework o librerie richiesti: se ti senti all'altezza, puoi provare a scaricarli e aggiungerli al tuo ambiente di build, ma questo non è in genere un processo banale e ha così tante varianti che non c'è modo di coprirli in una risposta.


Glossario

Costruisci strumenti

Uno strumento di creazione ti consente di creare un progetto con pochissimi comandi. Per la maggior parte dei progetti con più di un singolo file sorgente, uno strumento di compilazione sarà coinvolto da qualche parte. Esistono diversi strumenti di compilazione, ma i più comuni sono:

  • make , usato ovunque su Linux e sempre più comune su Windows. I progetti che utilizzano makepossono di solito essere identificati dalla presenza di a Makefile.

  • MSBuild è specifico di Windows e viene generalmente visualizzato insieme a Visual Studio. Questi di solito saranno accompagnati da un file *.slno *.vcxproj.

toolchain

Una toolchain è il compilatore e gli strumenti di supporto. Proprio come gli strumenti di compilazione, ce ne sono diversi e di solito vengono utilizzati con uno degli strumenti di compilazione.

  • MSVC è la toolchain di Microsoft. Questa è la toolchain più comune per lo sviluppo nativo di Windows. Questo di solito viene utilizzato con il sistema MSBuild e le build vengono generalmente create tramite Visual Studio. Tuttavia, anche i moderni progetti MSVC possono essere utilizzati Makefile.

  • GCC ( MinGW ) è una porta di GCC per Windows. Di solito usato con make. Se il progetto è indirizzato a Windows in modo nativo e ha un Makefile, è probabilmente per MinGW-GCC.

  • GCC ( Cygwin ) crea un ambiente compatibile con POSIX. Ciò consente di compilare direttamente la maggior parte dei programmi scritti per Linux o Unix e farlo funzionare direttamente in Windows. Più recentemente in Windows 10, Bash su Ubuntu su Windows è un'alternativa. GCC viene solitamente utilizzato insieme a make.

Quadri e librerie

Le biblioteche sono insiemi di codice riutilizzabili scritti da altre persone, da cui dipendono molti programmi per evitare di reinventare la ruota. È necessario disporre di queste dipendenze disponibili per costruire il progetto. Se sei fortunato, verranno inclusi nel download iniziale, ma non è sempre così.

I frame sono effettivamente una raccolta di librerie. Molti progetti utilizzano un framework, di cui avrai anche bisogno. Spesso questi hanno anche il loro sistema di compilazione, ma elencarli tutti sarebbe impossibile.

La parte più difficile riguarda le dipendenze extra di librerie e framework. Se, diciamo, il progetto usa Qt , allora avrai bisogno di tutto quel casino per costruirlo correttamente. Questa è una grande impresa e, a meno che tu non abbia precedenti esperienze, è probabilmente meglio chiedere agli altri un aiuto diretto qui.


1
In questo caso particolare il makefile ti dà una buona idea che è per mingw come la prima riga è MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill

1
questo merita la grazia imo
tbodt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.