¿Cómo instalo un programa de Windows (escrito en C) descargado de GitHub?

44

He descargado un programa simple de Windows de GitHub ( esto si es relevante). Lo descargué como un archivo ZIP, pero no puedo entender cómo instalarlo. Está escrito en C, creo. ¿Necesito un compilador? (Visual Studio?) ¿Hay algo simple que me estoy perdiendo?

Josh Friedlander
fuente
99
Lo siento, obviamente este es un problema novato importante que estoy teniendo. ¿Cómo? No hay archivo ejecutable.
Josh Friedlander
66
Probablemente necesite el SDK de Windows y los encabezados C asociados para compilar el programa. Normalmente, se mencionan las dependencias y las instrucciones de compilación se incluyen en el archivo Léame. En este caso, ninguno está incluido, por lo que debe solicitar al propietario del repositorio / autor del proyecto que obtenga la información relevante.
Larssend
77
Necesitas un compilador. Me acercaría al desarrollador y le preguntaría cómo construirlo. Por lo general, el software de Linux, por ejemplo, proporcionado como fuente incluye instrucciones de compilación, pero no veo ninguna en su Github.
LawrenceC
12
No ha descargado un programa real, ha descargado la fuente del programa y, sí, primero necesita compilarlo. A juzgar por el archivo MAKE, deberá construir lo que sea en MINGW.
Mokubai
21
aquí está el ejecutable github.com/renatosilva/winutils/releases
barlop

Respuestas:

29

Github es utilizado principalmente por programadores para colaborar en proyectos. La opción 'Descargar ZIP' descarga una copia del código fuente en su computadora. Esto por lo general 1 no contiene una copia de los ejecutables utilizables compilados / binarios (es decir, los archivos EXE)

Lanzamientos , es una característica de Github para enviar software a los usuarios finales (que generalmente no están interesados ​​en la codificación real). Los lanzamientos van acompañados de notas de lanzamiento y enlaces para descargar el software o el código fuente. Este es el primer lugar donde debe verificar los binarios .

En su caso, la página de lanzamientos ofrece descargas y archivos de configuración.

Sin embargo, muchos proyectos no tendrán lanzamientos (especialmente no para Windows), en cuyo caso puede hacer uno de los siguientes:

  1. Busque binarios en otras partes de Internet. Por lo general, los motores de búsqueda como DuckDuckGo (o Google , si lo prefiere) encontrarán lo que busca fácilmente. Intenta buscar <application name> for Windowso <application name> exe.

  2. Compílalo tú mismo. Necesitas tener al menos algunos conocimientos básicos del lenguaje de programación para poder hacerlo. Una vez más, los motores de búsqueda pueden ser enormemente útiles. Intenta buscar compile <application name> on Windowso MinGW compile <application name>.

    Aquí repasaré los conceptos básicos de la compilación de utilidades para Widnows:

    • Descargar MinGW . Personalmente, estoy a favor de este paquete porque viene con boost (que usan varias aplicaciones) y un shell genial. También viene con git, que puede ser súper útil si desea compilar archivos alojados en Github u otros repositorios de control de versiones de Git sin tener que descargar la fuente por separado.

    • Ejecute los siguientes comandos en cmdo powershell:

      • cd c:\sources\hello: Cambie el directorio a donde sea que se encuentre el / los archivo (s) de origen.
      • g++ helloworld.cpp -o helloworld.exe: aquí helloworld.cppestá el nombre del archivo fuente principal y helloworld.exeel nombre del ejecutable compilado.
      • En caso de que tenga que compilar varios archivos, enumérelos antes del -ocambio:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • Estas son las instrucciones para C ++. Si se trata de aplicaciones programadas en C, la extensión del archivo será en .clugar de .cpp, y debe usar el gcccomando en lugar de g++. El resto es más o menos idéntico.
      • Tenga en cuenta que es posible que deba especificar más argumentos de línea de comandos para compilar un ejecutable que funcione correctamente. La página del proyecto generalmente tendrá estos detalles.
      • También , probablemente, sin duda que desee ver en los archivos make. Esta publicación de Stack Overflow trata sobre makefiles en general, y esta nos dice cómo usarlos con MinGW. Si un proyecto viene con un archivo MAKE, pruébelo antes de compilar manualmente la fuente.
      • Ahora deberías poder correr helloworld.exe.
    • Nota: La mayoría de los proyectos vienen con un archivo README. Haga lo que su nombre lo indica, estos archivos contienen información importante sobre la compilación y ejecución de software y, al leerlo, puede evitar muchas molestias innecesarias.

1 Nota: A veces puede haber una carpeta llamada binentre los archivos descargados, que debe contener ejecutables / binarios utilizables

También vea Cygwin y GOW si desea utilidades de línea de comando GNU / Linux en Windows. Hago que la última versión de algunos ejecutables útiles esté disponible para descargar aquí .

Más información:
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
fuente
Gracias, esta es una gran respuesta, y la he cambiado para marcarla como la definitiva. (Antes había editado mi pregunta para aclarar que esto era lo que estaba buscando, pero por alguna razón BoundaryImposition la editó).
Josh Friedlander
Sin embargo, no creo que satisfaga la solicitud de recompensa de Aibobot, pero eso es entre usted y ella / él.
Josh Friedlander
2
@JoshFriedlander Me alegro de ser de alguna ayuda! Agregaré más a la respuesta más tarde ... Sí, estaba chateando con JourneymanGeek (Aibobot), va a esperar unos días a que surjan nuevas respuestas.
rahuldottech
1
Es posible que este proyecto no tenga ninguno, pero tenga en cuenta que la mayoría de los proyectos probablemente tendrán dependencias , lo que significa que si va a la ruta de compilación, es posible que deba rastrear las bibliotecas de las que depende el software, descargarlas e instalarlas ( o compilarlos también). Por lo general, no es tan simple como simplemente ejecutar el archivo MAKE; algunos de ellos incluso pueden tener otros scripts de construcción tales como cmake, script de configuración, etc.
JRH
2
¿Es el proceso realmente tan simple en la mayoría de los casos? ¿Qué fracción de las utilidades de github requiere un conocimiento sustancialmente mayor para compilarlas que esto que has descrito aquí?
gaazkam
87

Miras a tu alrededor y encuentras el instalador en la página de lanzamiento . Claro que podrías compilar la fuente, pero no creo que eso sea lo que quieres.

Journeyman Geek
fuente
49
Convenido. Si tiene que preguntar, no quiere estar compilando desde la fuente.
thunderblaster
10
Si usted tiene que pedir, es probable que no debe a instalar el software que sólo está disponible en forma de código fuente ...
jpaugh
11
Me inclino a estar de acuerdo con @jpaugh. Si bien es muy posible y, a veces, necesario construir desde la fuente, no es algo a lo que uno pueda ir y preguntar "¿cómo construyo un programa en C" de manera genérica? Hay demasiada variación. Algunos programas afortunados son tan simples como "compilar estos archivos". Otros necesitan makefiles. Algunos necesitan dependencias para descargar primero. El proceso de configuración para la compilación puede ser complicado y no es necesariamente no apto para programadores. Sin embargo, sobre todo, desea encontrar un archivo en el proyecto que explique cómo construir, porque los detalles dependen del proyecto.
Kat
35
@jpaugh: diría que tiene muchas más posibilidades de instalar malware descargando un ejecutable; el malware rara vez es de código abierto.
nombre
3
Asumiendo que realmente puedes leer el idioma. Compilé cosas de forma semi rutinaria en Linux y no puedo / no leo nada de la fuente. Incluso si pudiera, no voy a revisar cada línea única.
Journeyman Geek
66

Los archivos .c y .h son código fuente C.

Deberá instalar un compilador de C como Visual Studio, tcc o algo similar, cargar el proyecto y luego compilarlo para ejecutarlo.

De lo contrario, el proyecto tiene una página de lanzamiento ( aquí ) que le dará acceso a una versión precompilada para ahorrarle tiempo y esfuerzo.

Fazer87
fuente
14
Si tuviera que compilarlo, generalmente se explicaría en un archivo Léame, que ni siquiera menciona que debería buscar. Está destinado a ir a la página de lanzamiento, no es solo "fallar eso (instalar un compilador), que debe ir a la página de lanzamiento"
barlop
3
mingw también es popular.
Zan Lynx
1
Por lo general, un proyecto específico se adapta para su uso con un conjunto específico de herramientas de compilación (llamado "cadena de herramientas"), que normalmente se menciona en un archivo Léame (en proyectos UNIX y multiplataforma, se denomina convencionalmente BUILD o INSTALL) . En proyectos con un mantenimiento menos que estelar, o proyectos para entornos con solo unas pocas cadenas de herramientas conocidas, se supone que un usuario debe adivinar por el formato y / o contenido de los archivos del proyecto.
ivan_pozdeev
TCC? De Verdad? No hablabas en serio, ¿verdad?
Yashas
18

Esta respuesta abordará la cuestión general de construir una aplicación de Windows de solo fuente (en C). Si tiene suerte como el OP, puede encontrar binarios precompilados.

Lo primero que debe tener en cuenta aquí es que no hay una única forma de crear una aplicación desde la fuente. Existen aproximadamente tantas variaciones como proyectos diferentes. Dicho esto, aquí hay algunos pasos generales:

  1. Si tiene suerte, el proyecto proporcionará instrucciones de compilación, generalmente dentro del READMEarchivo. Ocasionalmente, también puede haber un INSTALLarchivo u otra documentación disponible. Si están disponibles, siga las instrucciones. Son tu mejor apuesta.

    Como otros han dicho, desafortunadamente, es muy difícil reconstruir los pasos de compilación requeridos sin instrucciones. Sin embargo, al menos podemos hacer un intento de mejor esfuerzo aquí, que funcionará para la mayoría de los proyectos simples.

  2. A falta de instrucciones, el siguiente puerto de escala es verificar qué herramienta de compilación se requiere.

    1. Si encuentra un archivo con una extensión .slno .vcxproj, este es probablemente un proyecto de MSBuild / Visual Studio. Descargue una copia de Visual Studio Community o Express (para C ++), abra ese archivo de proyecto allí y haga clic en el botón de reproducción en la barra de herramientas (o use el menú de compilación).

    2. Si encuentra un Makefile, esto probablemente va a requerir make. Pero aquí es donde las cosas se ponen aún más difíciles, ya que hay tantos sistemas independientes e incompatibles que usan make.

      1. Dado que está dirigido a Windows, probablemente usará MinGW . Descargue una copia de eso, inicie MSYS desde su menú de inicio, navegue ( cd) al directorio que contiene su proyecto y ejecútelo make.

      2. En la rara ocasión en que se trata de Cygwin (desafortunadamente no hay una manera fácil de saberlo, pero si el MinGW genera errores con un error relacionado con "posix", esta es una apuesta decente), deberá instalar Cygwin en su lugar. Desafortunadamente, esto no construye binarios nativos de Windows: tendrá que iniciar el programa a través de Cygwin cada vez.

    3. La "herramienta de compilación" podría ser un script personalizado con el nombre build.bato similar. En este caso, tendrá que abrirlo y ver qué hay dentro, o intentar ejecutarlo y ver cuáles son los errores. Si lo abre y ve menciones de GCC, regrese a 2.2.1. Paso MinGW pero ejecuta el script personalizado en lugar de make.

  3. Es posible que no haya una herramienta de construcción en absoluto. Si todo lo que encuentra es un solo archivo .co .cpparchivo, entonces probablemente sea lo suficientemente simple como para que pueda hacer una compilación directa. Estos son, nuevamente, casi siempre MinGW , así que descárguelo, inicie el shell de MSYS, navegue al directorio e invoque, gcco g++según sea necesario, por ejemplogcc -o program.exe program.c

  4. Es posible que ninguno de estos funcione. Si recibiste mensajes de error en cualquier paso, podrían contener una pista de lo que falta. Una posibilidad es que le faltaban ciertos marcos o bibliotecas requeridos; si lo desea, puede intentar descargarlos y agregarlos a su entorno de compilación, pero esto generalmente no es un proceso trivial y tiene tantas variaciones que no hay manera de cubrirlos en una respuesta.


Glosario

Construir herramientas

Una herramienta de compilación le permite construir un proyecto con muy pocos comandos. Para la mayoría de los proyectos con más de un solo archivo fuente, una herramienta de compilación estará involucrada en alguna parte. Existen varias herramientas de compilación, pero las más comunes son:

  • make , usado en todas partes en Linux y cada vez más común en Windows. Los proyectos que usan makegeneralmente se pueden identificar por la presencia de a Makefile.

  • MSBuild es específico de Windows y generalmente se ve junto con Visual Studio. Estos generalmente irán acompañados de un archivo *.slno *.vcxproj.

Cadenas de herramientas

Una cadena de herramientas es el compilador y las herramientas de soporte. Al igual que las herramientas de compilación, hay varias, y generalmente se usan con una de las herramientas de compilación.

  • MSVC es la cadena de herramientas de Microsoft. Esta es la cadena de herramientas más común para el desarrollo nativo de Windows. Esto generalmente se usa con el sistema MSBuild, y las compilaciones generalmente se crean a través de Visual Studio. Sin embargo, los proyectos modernos de MSVC también pueden usarse Makefile.

  • GCC ( MinGW ) es un puerto de GCC para Windows. Usualmente usado con make. Si el proyecto está dirigido a Windows de forma nativa y tiene un Makefile, probablemente sea para MinGW-GCC.

  • GCC ( Cygwin ) crea un entorno compatible con POSIX. Esto le permite compilar directamente la mayoría de los programas escritos para Linux o Unix y hacer que funcione directamente en Windows. Más recientemente en Windows 10, Bash en Ubuntu en Windows es una alternativa. GCC se usa generalmente junto con make.

Marcos y bibliotecas

Las bibliotecas son conjuntos de códigos reutilizables escritos por otras personas, de los que dependen muchos programas para evitar reinventar la rueda. Debe tener estas dependencias disponibles para construir el proyecto. Si tiene suerte, se incluirán con su descarga inicial, pero este no es siempre el caso.

Los marcos son efectivamente una colección de bibliotecas. Muchos proyectos usan un marco, que también necesitará. Estos a menudo vienen con su propio sistema de compilación también, pero enumerarlos a todos sería imposible.

La parte más difícil es lidiar con el marco adicional y las dependencias de la biblioteca. Si, por ejemplo, el proyecto usa Qt , entonces necesitarás todo ese desastre para construirlo correctamente. Esta es una tarea enorme, y a menos que tenga experiencia previa, probablemente sea mejor pedir ayuda directa a otros aquí.

Mover
fuente
1
En este caso particular , el archivo MAKE le da una buena pista de que es para Mingw, ya que la primera línea es MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill
1
éste merece la recompensa de la OMI
tbodt