Як встановити програму Windows (написану на мові C), завантажену з GitHub?


44

Я завантажив мертву просту програму Windows з GitHub ( це, якщо це доречно). Я завантажив його як ZIP-файл, але не можу зрозуміти, як його встановити. Це написано на С, я думаю. Чи потрібен мені компілятор? (Visual Studio?) Чи є щось просте, чого мені не вистачає?


9
Вибачте, це, очевидно, головне питання нооб у мене. Як? Немає виконуваного файлу.
Джош Фрідлендер

6
Можливо, для складання програми вам, мабуть, потрібен SDK Windows SD і відповідні заголовки C. Зазвичай про залежності згадують, а інструкції по компіляції включаються в програму Readme. У цьому випадку вони не включаються, тому вам потрібно попросити власника репо / проекту автора отримати відповідну інформацію.
Ларссенд

7
Вам потрібен компілятор. Я би звернувся до диявола і запитав, як його побудувати. Як правило, програмне забезпечення Linux, наприклад, яке подається в якості джерела, включає в себе інструкції по збірці, але я не бачу жодного його Github.
LawrenceC

12
Ви не завантажили фактичну програму, ви завантажили джерело для програми, і так, вам потрібно спершу скомпілювати її. Судячи з там, де є файл makefile, вам потрібно буде побудувати все, що є в MINGW.
Мокубай

21
Ось виконуваний файл github.com/renatosilva/winutils/releases
barlop

Відповіді:


29

Github в основному використовується програмістами для співпраці над проектами. Опція "Завантажити ZIP" завантажує копію вихідного коду на комп'ютер. Це , як правило , 1 не містить копії скомпільованих використовуваних виконуваних файлів / довічних файлів (наприклад, EXE - файли)

Випуски - це функція Github для доставки програмного забезпечення кінцевим користувачам (які зазвичай не зацікавлені у фактичному кодуванні). Випуски супроводжуються примітками до випуску та посиланнями на завантаження програмного забезпечення або вихідного коду. Це перше місце, яке слід перевірити на наявність бінарних файлів .

У вашому випадку на сторінці випусків пропонуються файли для завантаження та налаштування.

Однак у багатьох проектах не буде жодних релізів (особливо це стосується Windows), і в цьому випадку ви можете виконати одну з наступних дій:

  1. Шукайте бінарні файли в інших місцях Інтернету. Зазвичай такі пошукові системи, як DuckDuckGo (або Google , якщо вам зручніше), легко знайдуть те, що вам потрібно. Спробуйте знайти <application name> for Windowsабо <application name> exe.

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

    Тут я перегляну основи компіляції утиліт для Widnows:

    • Завантажити MinGW . Я особисто віддаю перевагу цьому пакету, оскільки він постачається з розширенням (яке використовують декілька додатків) та крутою оболонкою. Він також поставляється з 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++. Решта більш-менш однакові
      • Зауважте, що вам може знадобитися вказати більше аргументів командного рядка, щоб скласти виконуваний файл, який працює належним чином. На сторінці проекту зазвичай є ці деталі.
      • Ви також, напевно, напевно хочете заглянути в грифі. Ця публікація про переповнення стека загалом стосується файлів, і ця розповідає про те, як їх використовувати з MinGW. Якщо проект поставляється з makefile, спробуйте його, перш ніж вручну зібрати джерело.
      • Тепер ви повинні мати можливість бігати 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-with-mingw


Дякую, це чудова відповідь, і я змінив її, щоб вона була визначена як остаточна. (Я раніше редагував своє запитання, щоб зрозуміти, що це те, що я шукав, але чомусь BoundaryImposition відредагував його.)
Джош Фрідлендер,

Я не думаю, що він задовольняє банальний запит Айбобота, але це між вами та ним / ним.
Джош Фрідлендер

2
@JoshFriedlander Рада вам допомогти! Пізніше я додам більше відповіді ... Так, я спілкувався з JourneymanGeek (Aibobot), він буде чекати кілька днів, щоб отримати нові відповіді.
rahuldottech

1
Цей проект може не мати жодного, але зауважте, що більшість проектів, ймовірно, матимуть залежність , а це означає, що якщо ви збираєтеся маршрут компіляції, вам може знадобитися відстежити бібліотеки, від яких залежить програмне забезпечення, завантажити їх та встановити їх ( або скласти їх також). Зазвичай це не так просто, як просто запустити makefile; деякі з них можуть мати навіть інші сценарії побудови, такі як cmake, configure script тощо.
jrh

2
Чи справді процес у більшості випадків простий? Яка частка утиліт Github вимагає значно більших знань для їх складання, ніж це те, що ви тут описали?
gaazkam

87

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


49
Домовились. Якщо вам потрібно запитати, ви не хочете збирати з джерела.
громоверж

10
Якщо у вас є запитання, ви, ймовірно, не повинні встановлювати програмне забезпечення, яке доступне лише у вихідному вигляді ...
jpaugh

11
Я схильний погодитися з @jpaugh. Хоча це дуже можливо, а іноді і потрібно будувати з джерела, але це не те, що ви можете просто перейти і запитати "як я будую програму C" загальним способом. Тут просто занадто велика дисперсія. Деякі програми, які пощастили, такі ж прості, як і "компілювати ці файли". Іншим потрібні файли. Деяким потрібні залежності, які потрібно завантажити спочатку. Процес налаштування для складання може бути складним і не обов'язково дружним для непрограмістів. Перш за все, ви хочете знайти в проекті файл, який пояснює, як будувати, оскільки специфіка залежить від проекту.
Кет,

35
@jpaugh - Я б сказав, що у вас набагато більше шансів встановити зловмисне програмне забезпечення, завантаживши виконуваний файл - зловмисне програмне забезпечення рідко є відкритим кодом.
найменування

3
Якщо ви насправді читаєте мову. Я напівпросто збираю речі на Linux і не можу / не читаю жодне джерело. Навіть якщо я міг би, я не збираюся переглядати every.single.line.
Подорожник Geek

66

Файли .c та .h є вихідним кодом C.

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

Якщо цього немає, проект має сторінку випуску ( тут ), яка надасть вам доступ до заздалегідь складеної версії, щоб заощадити ваш час та сили.


14
Якщо він повинен був скласти його, то це зазвичай було б пояснено в readme, якого ви навіть не згадуєте, він повинен шукати. Він мається на увазі перейти на сторінку випуску. Це не просто "невдача (встановлення компілятора), що він повинен перейти на сторінку випуску"
барлоп

3
Mingw також популярний.
Зан Лінкс

1
Конкретний проект, як правило, розроблений для використання з певним набором інструментів компіляції (званим "ланцюжком інструментів") - який з них зазвичай згадується у файлі readme (в UNIX та кросплатформенних проектах, він умовно називається BUILD або INSTALL) . У менш ніж зоряно підтримуваних проектах або проектах для середовищ, які мають лише кілька відомих ланцюжків інструментів, користувач повинен здогадатися про формат та / або вміст файлів проектів.
ivan_pozdeev

TCC? Дійсно? Ви не були серйозні, чи не так?
Яшас

18

Ця відповідь стосуватиметься загального питання про створення єдиного джерела програми Windows (на мові С). Якщо вам пощастить, як ОП, ви зможете знайти попередньо складені бінарні файли.

Перше, про що слід пам’ятати, це те, що немає єдиного способу побудови програми з джерела. Існує приблизно стільки ж варіацій, скільки є різних проектів. Однак, ось кілька загальних кроків:

  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 on Ubuntu в Windows . ГКК зазвичай застосовується спільно з make.

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

Бібліотеки - це багаторазові набори кодів, написані іншими людьми, від яких залежить багато програм, щоб уникнути винаходиння колеса. Для створення проекту вам потрібно мати ці залежності. Якщо вам пощастить, вони будуть включені до вашого початкового завантаження, але це не завжди так.

Рамки - це фактично колекція бібліотек. У багатьох проектах використовується одна рамка, яка також вам знадобиться. Вони часто також мають власну систему побудови, але перерахувати їх все було б неможливо.

Найважча частина - це вирішення додаткових рамкових та бібліотечних залежностей. Якщо, скажімо, проект використовує Qt - тоді вам знадобиться весь цей безлад, щоб правильно його побудувати. Це величезне завдання, і якщо у вас немає попереднього досвіду, можливо, краще просто попросити інших отримати пряму допомогу.


1
У цьому конкретному випадку makefile дає вам добру думку, що це для mingw, як перший рядок MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill

1
цей заслуговує
великої якості
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.