Como instalo um programa do Windows (escrito em C) baixado do GitHub?

44

Eu baixei um programa Windows simples e morto do GitHub ( isso se for relevante). Fiz o download como um arquivo ZIP, mas não consigo descobrir como instalá-lo. Está escrito em C, eu acho. Preciso de um compilador? (Visual Studio?) Há algo simples que eu estou perdendo?

Josh Friedlander
fonte
9
Desculpe, este é obviamente um grande problema noob que estou tendo. Quão? Não há arquivo executável.
21717 Josh Friedlander
6
Você provavelmente precisa do Windows SDK e dos cabeçalhos C associados para compilar o programa. Normalmente, as dependências são mencionadas e as instruções de compilação são incluídas no Leia-me. Nesse caso, nenhum deles está incluído; portanto, você deve solicitar ao proprietário do repositório / autor do projeto para obter as informações relevantes.
precisa saber é o seguinte
7
Você precisa de um compilador. Eu procurava o desenvolvedor e perguntava como construí-lo. Normalmente, o software Linux, por exemplo, fornecido como fonte inclui instruções de construção, mas não vejo nenhuma no Github dele.
LawrenceC
12
Você não baixou um programa real, baixou a fonte do programa e, sim, precisa compilá-lo primeiro. A julgar pelo makefile, você precisará criar o que quer que seja no MINGW.
Mokubai
21
aqui é o executável github.com/renatosilva/winutils/releases
barlop

Respostas:

29

O Github é usado principalmente por programadores para colaborar em projetos. A opção 'Download ZIP' baixa uma cópia do código fonte no seu computador. Isso geralmente 1 não contém uma cópia dos executáveis ​​/ binários utilizáveis ​​compilados (ou seja, arquivos exe)

Lançamentos , é um recurso do Github para envio de software para usuários finais (que geralmente não estão interessados ​​na codificação real). As versões são acompanhadas de notas e links para baixar o software ou o código-fonte. Este é o primeiro lugar que você deve procurar por binários .

No seu caso, a página de lançamentos oferece downloads e arquivos de configuração.

No entanto, muitos projetos não terão nenhuma versão (especialmente para o Windows); nesse caso, você pode executar um dos seguintes procedimentos:

  1. Pesquise binários em outros lugares da Internet. Geralmente, os mecanismos de pesquisa como o DuckDuckGo (ou o Google , se você preferir) encontrarão o que deseja com facilidade. Tente procurar por <application name> for Windowsou <application name> exe.

  2. Compile você mesmo. Você precisa ter pelo menos algum conhecimento básico da linguagem de programação para poder fazer isso. Aqui, novamente, os mecanismos de pesquisa podem ser extremamente úteis. Tente procurar por compile <application name> on Windowsou MinGW compile <application name>.

    Aqui, vou explicar os conceitos básicos de compilação de utilitários para o Widnows:

    • Faça o download do MinGW . Pessoalmente, sou a favor deste pacote porque ele vem com boost (que vários aplicativos usam) e um shell legal. Ele também vem com git, o que pode ser super útil se você deseja compilar arquivos hospedados no Github ou em outros repositórios de controle de versão do Git sem precisar baixar o código-fonte separadamente.

    • Execute os seguintes comandos em cmdou powershell:

      • cd c:\sources\hello: Altere o diretório para onde quer que esteja o (s) arquivo (s) de origem.
      • g++ helloworld.cpp -o helloworld.exe: aqui helloworld.cppé o nome do arquivo de origem principal e helloworld.exeo nome do executável compilado.
      • Caso você precise compilar vários arquivos, liste-os antes da -otroca:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • Estas são as instruções para C ++. Se você estiver lidando com aplicativos programados em C, a extensão do arquivo será em .cvez de .cpp, e você deverá usar o gcccomando em vez de g++. O resto é mais ou menos idêntico
      • Observe que pode ser necessário especificar mais argumentos de linha de comando para compilar um executável que funcione corretamente. A página do projeto geralmente possui esses detalhes.
      • Você provavelmente também definitivamente quer olhar para makefiles. Este post sobre estouro de pilha é sobre makefiles em geral, e este nos diz como usá-los com o MinGW. Se um projeto vier com um makefile, tente antes de compilar manualmente a fonte.
      • Agora você deve poder executar helloworld.exe.
    • Nota: A maioria dos projetos vem com um arquivo README. Faça o que o nome indica, esses arquivos contêm informações importantes sobre a compilação e a execução de software e, lendo-o, você pode evitar muitos problemas desnecessários.

1 Nota: Às vezes, pode haver uma pasta chamada binentre os arquivos baixados, que deve conter executáveis ​​/ binários utilizáveis

Consulte também Cygwin e GOW se você quiser utilitários de linha de comando GNU / Linux no Windows. Faço algumas das versões mais recentes de alguns executáveis ​​úteis disponíveis para download aqui .

Leitura adicional:
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
fonte
Obrigado, esta é uma ótima resposta, e eu a mudei para ser marcada como definitiva. (I tinha anteriormente editadas minha pergunta para torná-lo mais claro que era isso que eu estava procurando, mas por alguma razão BoundaryImposition editado-lo.)
Josh Friedlander
Eu não acho que satisfaça a solicitação de recompensa de Aibobot, no entanto, mas isso é entre você e ela.
21417 Josh Friedlander
2
@JoshFriedlander Fico feliz em ajudar! Acrescentarei mais à resposta mais tarde ... Sim, eu estava conversando com o JourneymanGeek (Aibobot), ele vai esperar alguns dias para novas respostas aparecerem.
Rhuldottech
1
Esse projeto pode não ter nenhum, mas observe que a maioria dos projetos provavelmente terá dependências , o que significa que, se você estiver seguindo a rota de compilação, talvez seja necessário rastrear as bibliotecas das quais o software depende, fazer o download e instalá-las ( ou compilá-los também). Geralmente não é tão simples quanto executar o makefile; alguns deles podem até ter outros scripts de construção, tais como cmake, script configure, etc.
JRH
2
O processo é realmente tão simples na maioria dos casos? Qual fração dos utilitários do github requer conhecimento substancialmente maior para compilá-los do que você descreveu aqui?
precisa saber é o seguinte
87

Você olha em volta e encontra o instalador na página de lançamento . Claro que você pode compilar a fonte, mas acho que não é isso que você deseja.

Journeyman Geek
fonte
49
Acordado. Se você precisar perguntar, não deseja compilar a partir da fonte.
Thunderblaster
10
Se você tem que perguntar, você provavelmente não deve ser a instalação de software que só está disponível em forma de fonte ...
jpaugh
11
Estou inclinado a concordar com @jpaugh. Embora seja muito possível e às vezes necessário construir a partir do código-fonte, não é algo que você possa simplesmente perguntar "como faço para criar um programa C" de maneira genérica. Há muita variação. Alguns programas de sorte são tão simples quanto "compilar esses arquivos". Outros precisam de makefiles. Alguns precisam de dependências para serem baixadas primeiro. O processo de configuração para compilação pode ser complicado e não é necessariamente não-programador. Acima de tudo, porém, você deseja encontrar um arquivo no projeto que explique como criar, porque os detalhes são dependentes do projeto.
20917 Kat
35
@jpaugh - eu diria que você tem uma chance muito maior de instalar malware baixando um executável - o malware raramente é de código aberto.
Nomeado 21/04
3
Supondo que você possa realmente ler o idioma. Eu semi-rotineiramente compilei coisas no linux e não consigo / não leio nenhuma fonte. Mesmo que eu pudesse, não vou rever every.single.line.
Journeyman Geek
66

Os arquivos .c e .h são código-fonte C.

Você precisará instalar um compilador C, como o Visual Studio, tcc ou algo semelhante, carregar o projeto e compilá-lo para executá-lo.

Caso contrário, o projeto possui uma página de lançamento ( aqui ) que lhe dará acesso a uma versão pré-compilada para economizar tempo e esforço.

Fazer87
fonte
14
Se ele tivesse que compilá-lo, isso geralmente seria explicado em um leia-me, que você nem menciona que ele deveria procurar. Ele destina-se a ir para a página de liberação, não é apenas "na sua falta (de instalar um compilador), que ele deveria ir para a página de liberação"
barlop
3
mingw também é popular.
Zan Lynx
1
Um projeto específico geralmente é adaptado para uso com um conjunto específico de ferramentas de compilação (chamado "toolchain") - normalmente mencionado em um arquivo leia-me (em projetos UNIX e de plataforma cruzada, é chamado convencionalmente BUILD ou INSTALL) . Em projetos com menos de manutenção estelar ou em ambientes com apenas algumas cadeias de ferramentas conhecidas, o usuário deve adivinhar a partir do formato e / ou conteúdo dos arquivos do projeto.
precisa saber é o seguinte
TCC? Realmente? Você não estava falando sério, estava?
Yashas
18

Esta resposta abordará a questão geral de criar um aplicativo Windows somente de origem (em C). Se você tiver sorte como o OP, poderá encontrar binários pré-compilados.

A primeira coisa a ter em atenção aqui é que não há uma maneira única de criar um aplicativo a partir da fonte. Existem aproximadamente tantas variações quanto diferentes projetos. Dito isto, aqui estão algumas etapas gerais:

  1. Se você tiver sorte, o projeto fornecerá instruções de construção, geralmente dentro do READMEarquivo. Ocasionalmente, também pode haver um INSTALLarquivo ou outra documentação disponível. Se houver, siga as instruções. Eles são sua melhor aposta.

    Como já foi dito, infelizmente, é muito difícil reconstruir as etapas de compilação necessárias sem instruções. No entanto, podemos pelo menos fazer uma tentativa de melhor esforço aqui, que funcionará para a maioria dos projetos simples.

  2. Na falta de instruções, a próxima porta de escala é verificar qual ferramenta de compilação é necessária.

    1. Se você encontrar um arquivo com uma extensão .slnou .vcxproj, provavelmente este é um projeto do MSBuild / Visual Studio. Baixe uma cópia do Visual Studio Community ou Express (para C ++), abra esse arquivo de projeto e clique no botão play na barra de ferramentas (ou use o menu build).

    2. Se você encontrar um Makefile, provavelmente será necessário make. Mas é aqui que as coisas ficam ainda mais difíceis, pois existem muitos sistemas independentes e incompatíveis que usam make.

      1. Como ele é direcionado para o Windows, provavelmente usará o MinGW . Faça o download de uma cópia disso, inicie o MSYS no menu Iniciar, navegue ( cd) para o diretório que contém o seu projeto e execute make.

      2. Nas raras ocasiões em que é o Cygwin (infelizmente, não há uma maneira fácil de saber, mas se o MinGW criar erros com um erro relacionado ao "posix", esta é uma aposta decente), será necessário instalar o Cygwin . Infelizmente, isso não cria binários nativos do Windows - você terá que iniciar o programa através do Cygwin sempre.

    3. A "ferramenta de construção" pode ser um script personalizado com o nome build.batou similar. Nesse caso, você precisará abri-lo e ver o que há dentro, ou tentar executá-lo e ver quais são os erros. Se você o abrir e GCCvir menções de , volte para o 2.2.1. MinGW, mas execute o script personalizado em vez de make.

  3. É possível que não exista nenhuma ferramenta de construção. Se tudo que você encontrar é uma única .cou .cpparquivo, então provavelmente é bastante simples que você pode fazer uma compilação reta. Esses são, novamente, quase sempre o MinGW ; portanto, faça o download, inicie o shell MSYS, navegue até o diretório e chame um gccou g++conforme necessário - por exemplo,gcc -o program.exe program.c

  4. É possível que nada disso funcione. Se você recebeu mensagens de erro em qualquer etapa, elas podem conter uma pista do que está faltando. Uma possibilidade é a falta de algumas estruturas ou bibliotecas necessárias - se você quiser, pode fazer o download delas e adicioná-las ao seu ambiente de construção, mas esse normalmente não é um processo trivial e tem tantas variações que não há maneira de cobri-los em uma resposta.


Glossário

Ferramentas de construção

Uma ferramenta de construção permite criar um projeto com muito poucos comandos. Para a maioria dos projetos com mais de um único arquivo de origem, uma ferramenta de construção estará envolvida em algum lugar. Existem várias ferramentas de construção, mas as mais comuns são:

  • make , usado em qualquer lugar no Linux e cada vez mais comum no Windows. Projetos usando makegeralmente podem ser identificados pela presença de a Makefile.

  • O MSBuild é específico do Windows e normalmente é visto em conjunto com o Visual Studio. Geralmente, eles são acompanhados por um arquivo *.slnou *.vcxproj.

Ferramentas

Uma cadeia de ferramentas é o compilador e as ferramentas de suporte. Assim como as ferramentas de construção, existem várias e geralmente são usadas com uma das ferramentas de construção.

  • MSVC é a cadeia de ferramentas da Microsoft. Essa é a cadeia de ferramentas mais comum para o desenvolvimento nativo do Windows. Isso geralmente é usado com o sistema MSBuild e as compilações geralmente são criadas pelo Visual Studio. No entanto, projetos modernos de MSVC também podem ser usados Makefile.

  • GCC ( MinGW ) é uma porta do GCC para Windows. Geralmente usado com make. Se o projeto é direcionado para o Windows nativamente e possui um Makefile, provavelmente é para o MinGW-GCC.

  • O GCC ( Cygwin ) cria um ambiente compatível com POSIX. Isso permite que você compile diretamente a maioria dos programas criados para Linux ou Unix e faça com que funcione diretamente no Windows. Mais recentemente, no Windows 10, o Bash no Ubuntu no Windows é uma alternativa. O GCC é geralmente usado em conjunto com make.

Estruturas e bibliotecas

Bibliotecas são conjuntos reutilizáveis ​​de código escritos por outras pessoas, dos quais muitos programas dependem para evitar a reinvenção da roda. Você precisa ter essas dependências disponíveis para construir o projeto. Se você tiver sorte, eles serão incluídos no seu download inicial, mas esse nem sempre é o caso.

Estruturas são efetivamente uma coleção de bibliotecas. Muitos projetos usam uma estrutura, da qual você também precisará. Eles geralmente também vêm com seu próprio sistema de compilação, mas listar todos eles seria impossível.

A parte mais difícil é lidar com dependências extras de estrutura e biblioteca. Se, digamos, o projeto usa Qt - você precisará de toda essa bagunça para construí-lo adequadamente. Essa é uma tarefa enorme e, a menos que você tenha experiência anterior, provavelmente é melhor pedir ajuda direta a outras pessoas aqui.

Prumo
fonte
1
Neste particular, caso o makefile lhe dá uma boa idéia do que é para mingw como a primeira linha é MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill
1
este merece a recompensa imo
tbodt