Как установить программу для Windows (написанную на C), загруженную с GitHub?


44

Я загрузил мертвую простую программу для Windows из GitHub ( это , если это уместно). Я загрузил его в виде файла ZIP, но не могу понять, как его установить. Это написано на C, я думаю. Нужен ли мне компилятор? (Visual Studio?) Есть что-то простое, что мне не хватает?


9
Извините, это, очевидно, серьезная проблема с нубами. Как? Там нет исполняемого файла.
Джош Фридлендер

6
Вам, вероятно, понадобится Windows SDK и связанные заголовки C для компиляции программы. Обычно упоминаются зависимости, а инструкции по компиляции включаются в файл Readme. В этом случае ни один из них не включен, поэтому вы должны попросить владельца репо / автора проекта получить соответствующую информацию.
Larssend

7
Вам нужен компилятор. Я хотел бы обратиться к разработчику и спросить, как его построить. Обычно, например, программное обеспечение для Linux, поставляемое в качестве источника, содержит инструкции по сборке, но я не вижу его на Github.
LawrenceC

12
Вы не загрузили реальную программу, вы загрузили исходный код программы и, да, вам нужно сначала скомпилировать ее. Судя по make-файлу, вам нужно собрать все, что есть в MINGW.
Мокубай

21
вот исполняемый файл github.com/renatosilva/winutils/releases
barlop

Ответы:


29

Github в основном используется программистами для совместной работы над проектами. Параметр «Загрузить ZIP» загружает копию исходного кода на ваш компьютер. Это , как правило , 1 не содержит копии скомпилированных используемых исполняемых файлов / двоичных файлов (например, EXE - файлы)

Releases - это функция Github для доставки программного обеспечения конечным пользователям (которые обычно не заинтересованы в реальном кодировании). Релизы сопровождаются примечаниями к выпуску и ссылками для загрузки программного обеспечения или исходного кода. Это первое место, где вы должны проверить двоичные файлы .

В вашем случае на странице релизов предлагаются файлы для загрузки и настройки.

Однако многие проекты не будут иметь никаких выпусков (особенно не для Windows), и в этом случае вы можете выполнить одно из следующих действий:

  1. Поиск двоичных файлов в других местах в Интернете. Обычно поисковые системы, такие как DuckDuckGo (или Google , если вы предпочитаете), легко найдут то, что вы хотите. Попробуйте найти <application name> for Windowsили <application name> exe.

  2. Скомпилируйте это самостоятельно. Вы должны иметь хотя бы некоторые базовые знания языка программирования, чтобы иметь возможность сделать это. Здесь снова, поисковые системы могут быть чрезвычайно полезными. Попробуйте найти compile <application name> on Windowsили MinGW compile <application name>.

    Здесь я рассмотрю основы компиляции утилит для Widnows:

    • Скачать MinGW . Я лично одобряю этот пакет, потому что он поставляется с boost (который используют несколько приложений) и классной оболочкой. Он также поставляется с git, что может быть очень полезно, если вы хотите скомпилировать файлы, размещенные на Github или других репозиториях контроля версий Git, без необходимости отдельно загружать исходный код.

    • Выполните следующие команды в cmdили powershell:

      • cd c:\sources\hello: Перейдите в каталог, где находятся исходные файлы.
      • g++ helloworld.cpp -o helloworld.exe: здесь helloworld.cpp- имя основного исходного файла и helloworld.exeимя скомпилированного исполняемого файла.
      • Если вам нужно скомпилировать несколько файлов, перечислите их перед -oпереключателем:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • Это инструкции для C ++. Если вы имеете дело с приложениями, запрограммированными на C, расширение файла будет .cвместо .cpp, и вы должны использовать gccкоманду вместо g++. Остальное более или менее идентично
      • Обратите внимание, что вам может потребоваться указать больше аргументов командной строки для компиляции исполняемого файла, который работает правильно. На странице проекта обычно есть эти детали.
      • Вы также, вероятно, определенно хотите заглянуть в make-файлы. Это сообщение о переполнении стека о Makefiles в целом, и это один говорит нам , как использовать их с MinGW. Если проект поставляется с make-файлом, попробуйте его перед ручной компиляцией исходного кода.
      • Теперь вы должны быть в состоянии бежать helloworld.exe.
    • Примечание. Большинство проектов поставляются с файлом README. Пожалуйста, делайте то, что подразумевает название, эти файлы содержат важную информацию, касающуюся компиляции и запуска программного обеспечения, и, прочитав его, вы сможете избежать множества ненужных хлопот.

1 Примечание. Иногда binсреди загруженных файлов может быть папка , которая должна содержать исполняемые файлы / исполняемые файлы

Также смотрите Cygwin и GOW, если вы хотите использовать утилиты командной строки GNU / Linux в Windows. Я делаю несколько последних версий некоторых полезных исполняемых файлов, доступных для скачивания здесь .

Дополнительная информация:
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-с-MinGW


Спасибо, это отличный ответ, и я изменил его, чтобы пометить как окончательный. (Ранее я редактировал свой вопрос, чтобы было яснее, что это то, что я искал, но по какой-то причине BoundaryImposition отредактировал его.)
Джош Фридлендер,

Я не думаю, что это удовлетворяет просьбу Айбоба о вознаграждении, но это между вами и ней / ним.
Джош Фридлендер

2
@JoshFriedlander Рад быть полезным! Я добавлю больше к ответу позже ... Да, я болтал с JourneymanGeek (Aibobot), он собирается ждать несколько дней, пока новые ответы не появятся.
rahuldottech

1
Этот проект может не иметь никаких, но обратите внимание, что большинство проектов, вероятно, будут иметь зависимости , а это значит, что если вы идете по пути компиляции, вам может понадобиться отследить библиотеки, от которых зависит программное обеспечение, загрузить их и установить их ( или скомпилировать их тоже). Обычно это не так просто, как просто запустить make-файл; некоторые из них могут даже иметь другие сценарии сборки, такие как cmake, скрипт настройки и т. д.
jrh

2
Действительно ли процесс настолько прост в большинстве случаев? Какая часть утилит github требует существенно больших знаний для их компиляции, чем то, что Вы описали здесь?
Гаазкам

87

Вы оглядываетесь вокруг и находите установщик на странице релиза . Конечно, вы можете скомпилировать исходный код, но я не думаю, что вы этого хотите.


49
Согласовано. Если вам нужно спросить, вы не хотите компилировать из исходного кода.
thunderblaster

10
Если вам нужно спросить, вы, вероятно, не должны устанавливать программное обеспечение, которое доступно только в исходной форме ...
jpaugh

11
Я склонен согласиться с @jpaugh. Хотя сборку из исходного кода очень возможно, а иногда и необходимо, это не то, что вы можете просто пойти и спросить «как построить программу на C» в общем виде. Просто слишком много различий. Некоторые удачные программы так же просто, как «скомпилировать эти файлы». Другим нужны make-файлы. Некоторым нужны зависимости, которые будут загружены первыми. Процесс настройки для сборки может быть сложным и не обязательно дружественным к программисту. Прежде всего, однако, вы хотите найти файл в проекте, который объясняет, как построить, потому что особенности зависят от проекта.
Kat

35
@jpaugh - Я бы сказал, что у вас гораздо больше шансов установить вредоносное ПО, загрузив исполняемый файл - вредоносное ПО редко бывает открытым.
Знаменитый

3
Предполагая, что вы действительно можете читать язык. Я частично компилирую вещи на Linux, и я не могу читать / не читать ни одного источника. Даже если бы я мог, я не собираюсь пересматривать каждый.
Подмастерье Компьютерщик

66

Файлы .c и .h имеют исходный код на языке C.

Вам нужно будет установить компилятор C, такой как Visual Studio, tcc или что-то подобное, загрузить проект и затем скомпилировать его для запуска.

В противном случае у проекта есть страница релиза ( здесь ), которая даст вам доступ к предварительно скомпилированной версии, чтобы сэкономить ваше время и усилия.


14
Если он должен был скомпилировать его, то это обычно объясняется в файле readme, который вы даже не упоминаете, что он должен искать. Он предназначен для перехода на страницу релиза, он не просто «отказывает (установка компилятора), он должен перейти на страницу релиза»
barlop

3
Mingw также популярен.
Зан Рысь

1
Конкретный проект обычно настраивается для использования с определенным набором инструментов компиляции (называемым «цепочкой инструментов»), который обычно упоминается в файле readme (в UNIX и кроссплатформенных проектах он обычно называется BUILD или INSTALL) , В менее чем звездно поддерживаемых проектах или проектах для сред с несколькими известными наборами инструментов пользователь должен угадывать по формату и / или содержимому файлов проекта.
ivan_pozdeev

TCC? В самом деле? Вы не были серьезны, не так ли?
Яшас

18

Этот ответ будет касаться общего вопроса о создании приложения Windows только для исходного кода (на языке C). Если вам повезло, как OP, вы можете найти предварительно скомпилированные двоичные файлы.

Первое, о чем следует знать, это то, что нет единого способа создать приложение из исходного кода. Вариантов примерно столько же, сколько разных проектов. Тем не менее, вот несколько общих шагов:

  1. Если вам повезет, проект предоставит инструкции по сборке, обычно внутри READMEфайла. Иногда может также существовать INSTALLфайл или другая доступная документация. Если таковые имеются, следуйте инструкциям. Это ваша лучшая ставка.

    Как уже говорили другие, к сожалению, очень сложно восстановить необходимые этапы сборки без инструкций. Тем не менее, мы можем, по крайней мере, сделать попытку изо всех сил здесь, которая будет работать для большинства простых проектов.

  2. В отсутствие инструкций следующий порт захода - проверить, какой инструмент сборки необходим.

    1. Если вы найдете файл с расширением .slnили .vcxproj, это, вероятно, проект MSBuild / Visual Studio. Загрузите копию Visual Studio Community или Express (для C ++), откройте там этот файл проекта и нажмите кнопку воспроизведения на панели инструментов (или воспользуйтесь меню сборки).

    2. Если вы найдете Makefile, это, вероятно, потребует make. Но здесь все становится еще сложнее, поскольку используется так много независимых и несовместимых систем make.

      1. Поскольку он нацелен на Windows, он, вероятно, будет использовать MinGW . Загрузите его копию, запустите MSYS из меню «Пуск», перейдите ( cd) в каталог, в котором находится ваш проект, и запустите make.

      2. В редких случаях, когда вместо этого используется Cygwin (к сожалению, нет простого способа узнать, но если MinGW создает ошибки с ошибкой, связанной с «posix», это достойная ставка), вам придется вместо этого установить Cygwin . К сожалению, это не создает собственные двоичные файлы Windows - вам придется каждый раз запускать программу через Cygwin.

    3. «Инструмент сборки» может представлять собой пользовательский сценарий по имени build.batили аналогичный. В этом случае вам придется либо открыть его и посмотреть, что внутри, либо попробовать запустить его и посмотреть, в чем заключаются ошибки. Если вы откроете его и увидите упоминания GCC, вернитесь к 2.2.1. Шаг MinGW, но запустите пользовательский скрипт вместо make.

  3. Возможно, что нет никакого инструмента для сборки вообще. Если все, с чем вы сталкиваетесь, - это отдельный файл .cили .cppфайл, то, вероятно, достаточно просто, чтобы вы могли выполнить прямую компиляцию. Это, опять же, почти всегда MinGW , поэтому загрузите его, запустите оболочку MSYS, перейдите в каталог и вызовите либо, gccлибо по g++мере необходимости, напримерgcc -o program.exe program.c

  4. Вполне возможно, что ни одна из этих работ. Если вы получили сообщения об ошибках на любом этапе, они могут содержать подсказку о том, чего не хватает. Одна из возможностей заключается в том, что вам не хватало определенных необходимых сред или библиотек - если вы чувствуете, что можете, загрузите их и добавьте в свою среду сборки, но обычно это не тривиальный процесс, и в нем так много вариантов, что нет способ покрыть их в ответе.


глоссарий

Инструменты сборки

Инструмент для сборки позволяет строить проект с очень мало команд. Для большинства проектов с более чем одним исходным файлом где-то будет задействован инструмент сборки. Существует несколько инструментов сборки, но наиболее распространенными являются:

  • make , используется повсеместно в Linux и все чаще встречается в Windows. Использование проектов makeобычно можно определить по наличию Makefile.

  • MSBuild специфичен для Windows и обычно рассматривается в сочетании с Visual Studio. Обычно они сопровождаются файлом *.slnили *.vcxprojфайлом.

компилированные инструменты

Набор инструментов является компилятор и вспомогательные инструменты. Как и у инструментов сборки, их несколько, и они обычно используются с одним из инструментов сборки.

  • MSVC - это набор инструментов Microsoft. Это наиболее распространенный набор инструментов для разработки Windows. Это обычно используется с системой MSBuild, а сборки обычно создаются с помощью Visual Studio. Тем не менее, современные проекты MSVC можно использовать Makefileтоже.

  • GCC ( MinGW ) - это порт GCC для Windows. Обычно используется с make. Если проект изначально ориентирован на Windows и имеет Makefile, вероятно, для MinGW-GCC.

  • GCC ( Cygwin ) создает POSIX-совместимую среду. Это позволяет напрямую компилировать большинство программ, написанных для Linux или Unix, и работать напрямую под Windows. Совсем недавно в Windows 10, Bash на Ubuntu на Windows является альтернативой. GCC обычно используется в сочетании с make.

Каркасы и библиотеки

Библиотеки - это повторно используемые наборы кода, написанные другими людьми, от которых зависят многие программы, чтобы не изобретать велосипед. Вы должны иметь эти зависимости, доступные для построения проекта. Если вам повезет, они будут включены в вашу первоначальную загрузку, но это не всегда так.

Фреймворки - это фактически коллекция библиотек. Многие проекты используют один фреймворк, который вам также понадобится. Они также часто имеют собственную систему сборки, но перечислить их все было бы невозможно.

Самое сложное - это работа с дополнительными фреймворками и библиотечными зависимостями. Если, скажем, проект использует Qt - тогда вам понадобится весь этот беспорядок, чтобы правильно его построить. Это огромная задача, и если у вас нет опыта, вероятно, лучше просто попросить других о прямой помощи здесь.


1
В этом конкретном случае make-файл дает вам хорошее представление о том, что он предназначен для mingw, как первая строка MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill

1
этот заслуживает
награды
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.