Jak zainstalować program Windows (napisany w C) pobrany z GitHub?

44

Pobrałem martwego prosty program Windows z GitHub ( to jeśli jest to istotne). Pobrałem go jako plik ZIP, ale nie wiem, jak go zainstalować. Myślę, że jest napisane w C. Czy potrzebuję kompilatora? (Visual Studio?) Czy brakuje mi czegoś prostego?

Josh Friedlander
źródło
9
Przepraszam, to oczywiście poważny problem noob, który mam. W jaki sposób? Nie ma pliku wykonywalnego.
Josh Friedlander,
6
Prawdopodobnie potrzebujesz zestawu Windows SDK i powiązanych nagłówków C, aby skompilować program. Zazwyczaj wspomniane są zależności, a instrukcje kompilacji są zawarte w pliku Readme. W takim przypadku żadne z nich nie jest uwzględnione, dlatego musisz poprosić właściciela repo / autora projektu o uzyskanie odpowiednich informacji.
Larssend,
7
Potrzebujesz kompilatora. Sięgam do dewelopera i pytam, jak go zbudować. Zazwyczaj oprogramowanie Linux, na przykład dostarczane jako źródło, zawiera instrukcje kompilacji, ale nie widzę żadnego na jego Githubie.
LawrenceC
12
Nie pobrałeś rzeczywistego programu, pobrałeś jego źródło i tak, musisz go najpierw skompilować. Sądząc po makefile tam, będziesz musiał zbudować cokolwiek to jest w MINGW.
Mokubai
21
oto plik wykonywalny github.com/renatosilva/winutils/releases
barlop

Odpowiedzi:

29

Github jest używany głównie przez programistów do współpracy przy projektach. Opcja „Pobierz ZIP” pobiera kopię kodu źródłowego na komputer. To zazwyczaj 1 nie zawiera kopię skompilowanych plików wykonywalnych użytkowych / binarne (tzn pliki EXE)

Wydawnictwa , to funkcja Github do wysyłania oprogramowania do użytkowników końcowych (którzy zwykle nie są zainteresowani faktycznym kodowaniem). Wydawnictwu towarzyszą uwagi do wydania oraz łącza do pobrania oprogramowania lub kodu źródłowego. To jest pierwsze miejsce, w którym powinieneś sprawdzić pliki binarne .

W twoim przypadku strona z wydaniami oferuje pliki do pobrania i pliki instalacyjne.

Jednak wiele projektów nie będzie miało żadnych wydań (zwłaszcza nie dla systemu Windows), w którym to przypadku możesz wykonać jedną z następujących czynności:

  1. Wyszukaj pliki binarne w innym miejscu w Internecie. Zwykle wyszukiwarki takie jak DuckDuckGo (lub Google , jeśli wolisz) łatwo znajdą to, czego szukasz. Spróbuj wyszukać <application name> for Windowslub <application name> exe.

  2. Skompiluj to sam. Aby to zrobić, musisz mieć przynajmniej podstawową znajomość języka programowania. Również tutaj wyszukiwarki mogą być bardzo pomocne. Spróbuj wyszukać compile <application name> on Windowslub MinGW compile <application name>.

    Tutaj przedstawię podstawy narzędzi do kompilacji dla Widnows:

    • Pobierz MinGW . Osobiście faworyzuję ten pakiet, ponieważ zawiera on ulepszenie (z którego korzysta kilka aplikacji) i fajną powłokę. Jest również wyposażony w git, co może być bardzo przydatne, jeśli chcesz kompilować pliki hostowane na Github lub innych repozytoriach kontroli wersji Git bez konieczności oddzielnego pobierania źródła.

    • Uruchom następujące polecenia w cmdlub powershell:

      • cd c:\sources\hello: Zmień katalog na gdziekolwiek znajduje się plik (i) źródłowy.
      • g++ helloworld.cpp -o helloworld.exe: tutaj helloworld.cppjest nazwa głównego pliku źródłowego i helloworld.exenazwa skompilowanego pliku wykonywalnego.
      • Jeśli musisz skompilować wiele plików, wypisz je przed -oprzełącznikiem:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • To są instrukcje dla C ++. Jeśli masz do czynienia z aplikacjami zaprogramowanymi w C, rozszerzenie pliku będzie .czamiast .cpp, i powinieneś użyć gccpolecenia zamiast g++. Reszta jest mniej więcej identyczna
      • Zauważ, że może być konieczne podanie większej liczby argumentów wiersza poleceń, aby skompilować plik wykonywalny, który działa poprawnie. Strona projektu zwykle zawiera te szczegóły.
      • Ty też pewnie zdecydowanie zajrzeć do makefile. Ten post przepełnienia stosu dotyczy ogólnie plików makefile, a ten mówi nam, jak ich używać z MinGW. Jeśli projekt zawiera plik makefile, wypróbuj go przed ręczną kompilacją źródła.
      • Powinieneś teraz móc biegać helloworld.exe.
    • Uwaga: większość projektów zawiera plik README. Rób, co sugeruje nazwa, pliki te zawierają ważne informacje dotyczące kompilowania i uruchamiania oprogramowania, a czytając je, możesz uniknąć wielu niepotrzebnych kłopotów.

1 Uwaga: Czasami binmiędzy pobranymi plikami może się pojawić folder , który powinien zawierać użyteczne pliki wykonywalne / pliki binarne

Zobacz także Cygwin i GOW, jeśli chcesz narzędzia wiersza poleceń GNU / Linux w systemie Windows. Udostępniam tutaj najnowszą wersję niektórych przydatnych plików wykonywalnych .

Dalsza lektura:
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-o- -run-configure-with-mingw

rahuldottech
źródło
Dzięki, to świetna odpowiedź i zmieniłem ją, by oznaczyć ją jako ostateczną. (Wcześniej zredagowałem moje pytanie, aby wyjaśnić, że tego właśnie szukałem, ale z jakiegoś powodu BoundaryImposition zredagowało je.)
Josh Friedlander
Nie sądzę jednak, aby spełniało ono prośbę o nagrodę Aibobota, ale to między tobą a nią / nim.
Josh Friedlander
2
@JoshFriedlander Cieszę się, że mogę ci pomóc! Później dodam więcej do odpowiedzi ... Tak, rozmawiałem z JourneymanGeek (Aibobot), on będzie czekał kilka dni na pojawienie się nowych odpowiedzi.
rahuldottech
1
Ten projekt może nie mieć żadnych, ale należy pamiętać, że większość projektów prawdopodobnie będzie miała zależności , co oznacza, że ​​jeśli wybierzesz ścieżkę kompilacji, może być konieczne wyśledzenie bibliotek, od których zależy oprogramowanie, pobranie ich i zainstalowanie ( lub też je skompiluj). Zwykle nie jest tak proste jak uruchomienie makefile; niektóre z nich mogą mieć nawet inne skrypty kompilacji, takie jak cmake, konfiguracja skryptu itp.
jrh
2
Czy proces jest naprawdę tak prosty w większości przypadków? Która część narzędzi github wymaga znacznie większej wiedzy do ich skompilowania niż to, co tutaj opisałeś?
gaazkam
87

Rozejrzyj się i znajdź instalatora na stronie wydania . Pewnie, że możesz skompilować źródło, ale nie sądzę, że tego właśnie chcesz.

Journeyman Geek
źródło
49
Zgoda. Jeśli musisz zapytać, nie chcesz kompilować ze źródła.
thunderblaster
10
Jeśli musisz zapytać, prawdopodobnie nie powinieneś instalować oprogramowania, które jest dostępne tylko w formie źródłowej ...
jpaugh
11
Jestem skłonny zgodzić się z @jpaugh. Chociaż jest to bardzo możliwe, a czasem konieczne, aby zbudować ze źródła, nie jest to coś, co można po prostu zapytać „jak zbudować program w C” w ogólny sposób. Po prostu jest za dużo wariancji. Niektóre szczęśliwe programy są tak proste, jak „kompilacja tych plików”. Inni potrzebują plików makefile. Niektóre wymagają najpierw pobrania zależności. Proces konfiguracji kompilacji może być skomplikowany i niekoniecznie przyjazny dla programistów. Przede wszystkim jednak chcesz znaleźć w projekcie plik, który wyjaśnia, jak budować, ponieważ specyfika zależy od projektu.
Kat
35
@jpaugh - Powiedziałbym, że masz znacznie większą szansę na zainstalowanie złośliwego oprogramowania poprzez pobranie pliku wykonywalnego - złośliwe oprogramowanie rzadko jest oprogramowaniem typu open source.
imię
3
Zakładając, że rzeczywiście potrafisz czytać język. W części rutynowo kompiluję rzeczy na systemie Linux i nie mogę / nie czytam żadnego źródła. Nawet gdybym mógł, nie będę recenzować wszystkich.single.line.
Journeyman Geek
66

Pliki .c i .h są kodem źródłowym C.

Musisz zainstalować kompilator C, taki jak Visual Studio, tcc lub coś podobnego, załadować projekt, a następnie skompilować, aby go uruchomić.

W przeciwnym razie projekt ma stronę wydania ( tutaj ), która da ci dostęp do wstępnie skompilowanej wersji, aby zaoszczędzić czas i wysiłek.

Fazer87
źródło
14
Gdyby musiał go skompilować, to zazwyczaj wyjaśniono by to w pliku readme, o którym nawet nie wspominasz, że powinien poszukać. Ma on przejść do strony wydania, nie chodzi tylko o to, że (instalacja kompilatora), że powinien przejść do strony wydania
barlop
3
mingw jest również popularny.
Zan Lynx
1
Konkretny projekt jest zwykle dostosowany do użycia z określonym zestawem narzędzi kompilacyjnych (zwanym „zestawem narzędzi”) - o którym zwykle wspomina się w pliku readme (w projektach UNIX i międzyplatformowych ma tradycyjną nazwę BUILD lub INSTALL) . W mniej niż doskonale utrzymanych projektach lub projektach dla środowisk z tylko kilkoma dobrze znanymi łańcuchami narzędzi użytkownik powinien zgadywać na podstawie formatu i / lub zawartości plików projektu.
ivan_pozdeev
TCC? Naprawdę? Nie mówiłeś poważnie, prawda?
Yashas,
18

Ta odpowiedź będzie dotyczyła ogólnego pytania o zbudowanie aplikacji Windows tylko do źródła (w C). Jeśli masz szczęście, podobnie jak OP, możesz znaleźć wstępnie skompilowane pliki binarne.

Pierwszą rzeczą, o której należy pamiętać, jest to, że nie ma jednego sposobu na zbudowanie aplikacji ze źródła. Istnieje około tyle odmian, ile różnych projektów. To powiedziawszy, oto kilka ogólnych kroków:

  1. Jeśli masz szczęście, projekt dostarczy instrukcje kompilacji, zwykle w READMEpliku. Czasami może być dostępny INSTALLplik lub inna dokumentacja. Jeśli są one dostępne, postępuj zgodnie z instrukcjami. To twój najlepszy zakład.

    Jak powiedzieli inni, niestety bardzo trudno jest odtworzyć wymagane kroki kompilacji bez instrukcji. Jednak możemy przynajmniej podjąć próbę jak największego wysiłku, która będzie działać w przypadku najprostszych projektów.

  2. Brak instrukcji, następnym portem jest sprawdzenie, które narzędzie do budowania jest wymagane.

    1. Jeśli znajdziesz plik z rozszerzeniem .slnlub .vcxproj, prawdopodobnie jest to projekt MSBuild / Visual Studio. Pobierz kopię Visual Studio Community lub Express (dla C ++), otwórz tam plik projektu i kliknij przycisk odtwarzania na pasku narzędzi (lub użyj menu kompilacji).

    2. Jeśli znajdziesz Makefile, prawdopodobnie będzie to wymagać make. Ale w tym momencie sprawy stają się jeszcze trudniejsze, ponieważ używa tak wielu niezależnych i niekompatybilnych systemów make.

      1. Ponieważ jest ukierunkowany na Windows, prawdopodobnie użyje MinGW . Pobierz jego kopię, uruchom MSYS z menu Start, przejdź cddo katalogu zawierającego projekt i uruchom make.

      2. W rzadkich przypadkach, gdy jest to Cygwin (niestety nie ma łatwego sposobu, aby to stwierdzić, ale jeśli błędy kompilacji MinGW zawierają błąd związany z „posixem”, jest to przyzwoity zakład), zamiast tego musisz zainstalować Cygwin . Niestety nie buduje to rodzimych plików binarnych Windows - za każdym razem będziesz musiał uruchamiać program przez Cygwin.

    3. „Narzędzie do budowania” może być niestandardowym skryptem o nazwie build.batlub podobnym. W takim przypadku musisz go otworzyć i zobaczyć, co jest w środku, lub spróbować go uruchomić i zobaczyć, jakie są błędy. Jeśli go otworzysz i zobaczysz wzmianki o GCC, wróć do 2.2.1. Krok MinGW, ale zamiast tego uruchom skrypt niestandardowy make.

  3. Możliwe, że w ogóle nie ma narzędzia do kompilacji. Jeśli wszystko, co napotkasz, to pojedynczy plik .club .cppplik, prawdopodobnie jest to na tyle proste, że możesz wykonać prostą kompilację. Są to znów niemal zawsze MinGW , więc pobranie że uruchomienie Msys powłokę, przejdź do katalogu, i wywołać albo gccczy g++jest to konieczne - npgcc -o program.exe program.c

  4. Możliwe, że żadna z nich nie działa. Jeśli na dowolnym etapie pojawią się komunikaty o błędach, mogą zawierać wskazówkę dotyczącą tego, czego brakuje. Jedną z możliwości jest brak pewnych wymaganych ram lub bibliotek - jeśli masz na to ochotę, możesz spróbować pobrać je i dodać do środowiska kompilacji, ale zwykle nie jest to trywialny proces i ma tak wiele odmian, że nie ma sposób na uwzględnienie ich w odpowiedzi.


Słownik

Twórz narzędzia

Narzędzie build pozwala zbudować projekt z bardzo niewielu poleceń. W przypadku większości projektów z więcej niż jednym plikiem źródłowym, gdzieś zaangażowane będzie narzędzie kompilacji. Istnieje kilka narzędzi do budowania, ale najczęstsze to:

  • marka , używana wszędzie w systemie Linux i coraz powszechniejsza w systemie Windows. Projekty wykorzystujące makezwykle można rozpoznać po obecności Makefile.

  • MSBuild jest specyficzny dla systemu Windows i zwykle jest wyświetlany w połączeniu z Visual Studio. Zazwyczaj towarzyszy im plik *.slnlub *.vcxproj.

Łańcuchy narzędzi

Toolchain jest kompilator oraz narzędzia pomocnicze. Podobnie jak narzędzia do budowania, jest ich kilka i zwykle są one używane z jednym z narzędzi do budowania.

  • MSVC to zestaw narzędzi Microsoft. Jest to najczęstszy zestaw narzędzi dla rodzimego programowania Windows. Jest to zwykle używane w systemie MSBuild, a kompilacje są zwykle tworzone za pomocą Visual Studio. Jednak nowoczesne projekty MSVC również mogą z nich korzystać Makefile.

  • GCC ( MinGW ) to port GCC dla Windows. Zwykle używany z make. Jeśli projekt jest natywnie ukierunkowany na Windows i ma Makefile, prawdopodobnie dotyczy to MinGW-GCC.

  • GCC ( Cygwin ) tworzy środowisko kompatybilne z POSIX. Pozwala to na bezpośrednią kompilację większości programów napisanych dla Linuksa lub Uniksa i umożliwia działanie bezpośrednio pod Windows. Niedawno w Windows 10 Bash na Ubuntu na Windows jest alternatywą. GCC jest zwykle używany w połączeniu z make.

Frameworki i biblioteki

Biblioteki to zestawy kodów wielokrotnego użytku napisane przez innych ludzi, od których wielu programów zależy, aby nie wymyślać koła na nowo. Te zależności muszą być dostępne, aby zbudować projekt. Jeśli masz szczęście, zostaną one uwzględnione przy pierwszym pobieraniu, ale nie zawsze tak jest.

Frameworki są w rzeczywistości zbiorem bibliotek. Wiele projektów korzysta z jednego frameworka, który również będzie ci potrzebny. Często mają one własny system kompilacji, ale ich zestawienie byłoby niemożliwe.

Najtrudniejsza część dotyczy dodatkowych zależności frameworka i biblioteki. Jeśli powiedzmy, że projekt używa Qt - będziesz potrzebować całego bałaganu, aby go poprawnie zbudować. To ogromne przedsięwzięcie i jeśli nie masz wcześniejszego doświadczenia, prawdopodobnie lepiej poprosić innych o bezpośrednią pomoc.

Kok
źródło
1
W tym konkretnym przypadku plik makefile daje ci dobrą wskazówkę, że to dla mingw, jak pierwsza linia MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill
1
ten zasługuje na nagrodę imo
tbodt