Làm cách nào để cài đặt chương trình Windows (viết bằng C) được tải xuống từ GitHub?


44

Tôi đã tải xuống một chương trình Windows đơn giản đã chết từ GitHub ( điều này nếu nó phù hợp). Tôi đã tải xuống dưới dạng tệp ZIP, nhưng tôi không thể tìm ra cách cài đặt nó. Nó được viết bằng C, tôi nghĩ vậy. Tôi có cần một trình biên dịch không? (Visual Studio?) Có thứ gì đơn giản mà tôi đang thiếu không?


9
Xin lỗi, đây rõ ràng là một vấn đề lớn của tôi. Làm sao? Không có tập tin thực thi.
Josh Friedlander

6
Bạn có thể cần Windows SDK và các tiêu đề C được liên kết để biên dịch chương trình. Thông thường, các phụ thuộc được đề cập và hướng dẫn biên dịch được bao gồm trong Readme. Trong trường hợp này, không bao gồm, vì vậy bạn phải yêu cầu chủ sở hữu repo / tác giả dự án để có được thông tin liên quan.
Larssend

7
Bạn cần một trình biên dịch. Tôi sẽ tiếp cận với nhà phát triển và hỏi làm thế nào để xây dựng nó. Ví dụ, phần mềm Linux, được cung cấp dưới dạng nguồn bao gồm các hướng dẫn xây dựng nhưng tôi không thấy bất kỳ phần mềm nào trên Github của anh ấy.
LawrenceC

12
Bạn chưa tải xuống một chương trình thực tế, bạn đã tải xuống nguồn cho chương trình và, vâng, trước tiên bạn cần phải biên dịch nó. Đánh giá bởi makefile trong đó bạn sẽ cần phải xây dựng bất cứ thứ gì trong MINGW.
Mokubai

Câu trả lời:


29

Github chủ yếu được sử dụng bởi các lập trình viên để hợp tác trong các dự án. Tùy chọn 'Tải xuống ZIP' tải xuống một bản sao của mã nguồn vào máy tính của bạn. Điều này thường 1 không chứa một bản sao của các tệp thực thi / nhị phân có thể sử dụng được biên dịch (ví dụ: các tệp exe)

Phát hành , là một tính năng Github dành cho phần mềm vận chuyển cho người dùng cuối (những người thường không quan tâm đến mã hóa thực tế). Các bản phát hành được kèm theo ghi chú phát hành và liên kết để tải xuống phần mềm hoặc mã nguồn. Đây là nơi đầu tiên bạn nên kiểm tra nhị phân .

Trong trường hợp của bạn, trang phát hành cung cấp các tệp tải xuống và thiết lập.

Tuy nhiên, nhiều dự án sẽ không có bất kỳ bản phát hành nào (đặc biệt là không dành cho Windows), trong trường hợp đó bạn có thể thực hiện một trong các cách sau:

  1. Tìm kiếm nhị phân ở nơi khác trên internet. Thông thường các công cụ tìm kiếm như DuckDuckGo (hoặc Google , nếu bạn thích) sẽ tìm thấy những gì bạn muốn một cách dễ dàng. Hãy thử tìm kiếm <application name> for Windowshoặc <application name> exe.

  2. Tự biên dịch nó. Bạn cần có ít nhất một số kiến ​​thức cơ bản về ngôn ngữ lập trình để có thể làm như vậy. Ở đây một lần nữa, công cụ tìm kiếm có thể rất hữu ích. Hãy thử tìm kiếm compile <application name> on Windowshoặc MinGW compile <application name>.

    Ở đây tôi sẽ tìm hiểu những điều cơ bản về biên dịch tiện ích cho Widnows:

    • Tải xuống MinGW . Cá nhân tôi thích gói này vì nó đi kèm với boost (mà một số ứng dụng sử dụng) và shell tuyệt vời. Nó cũng đi kèm git, có thể cực kỳ hữu ích nếu bạn muốn biên dịch các tệp được lưu trữ trên Github hoặc các kho điều khiển phiên bản Git khác mà không phải tải xuống nguồn riêng.

    • Chạy các lệnh sau trong cmdhoặc powershell:

      • cd c:\sources\hello: Thay đổi thư mục thành bất cứ nơi nào mà (các) tệp nguồn được đặt.
      • g++ helloworld.cpp -o helloworld.exe: đây helloworld.cpplà tên của tệp nguồn chính và helloworld.exelà tên của tệp thực thi được biên dịch.
      • Trong trường hợp bạn phải biên dịch nhiều tệp liệt kê chúng trước khi -ochuyển đổi:g++ helloworld.cpp foo.cpp -o helloworld.exe
      • Đây là những hướng dẫn cho C ++. Nếu bạn đang xử lý các ứng dụng được lập trình trong C, phần mở rộng tệp sẽ .cthay thế .cppvà bạn nên sử dụng gcclệnh thay vì g++. Phần còn lại giống hoặc ít hơn
      • Lưu ý rằng bạn có thể cần chỉ định thêm các đối số dòng lệnh để biên dịch một tệp thực thi hoạt động đúng. Trang dự án thường sẽ có những chi tiết này.
      • Bạn cũng có thể chắc chắn muốn nhìn vào makefiles. Bài viết về Stack Overflow này nói về makefiles nói chung và bài này cho chúng ta biết cách sử dụng chúng với MinGW. Nếu một dự án đi kèm với tệp tạo tệp, hãy thử nó trước khi biên dịch nguồn theo cách thủ công.
      • Bây giờ bạn có thể chạy helloworld.exe.
    • Lưu ý: Hầu hết các dự án đều có tệp README. Vui lòng thực hiện những gì tên ngụ ý, các tệp này chứa thông tin quan trọng liên quan đến việc biên dịch và chạy phần mềm và bằng cách đọc nó, bạn có thể tránh được nhiều rắc rối không cần thiết.

1 Lưu ý: Đôi khi có thể có một thư mục được gọi bintrong số các tệp đã tải xuống, trong đó có chứa các tệp thực thi / nhị phân có thể sử dụng được

Đồng thời xem CygwinGOW nếu bạn muốn các tiện ích dòng lệnh GNU / Linux trên Windows. Tôi làm cho một số phiên bản mới nhất của một số thực thi hữu ích có sẵn để tải về ở đây .

Đọc thêm:
http://www.mingw.org/wiki/MinGW_for_First_Time_UsftimeHOWTO
https://gcc.gnu.org/onlinesocs/index.html#dir
https://stackoverflow.com/questions/22873884/how-do-i -sl-configure-with-mingw


Cảm ơn, đây là một câu trả lời tuyệt vời và tôi đã thay đổi nó để được đánh dấu là câu trả lời dứt khoát. (Trước đó tôi đã chỉnh sửa câu hỏi của mình để làm rõ hơn rằng đây là điều tôi đang tìm kiếm, nhưng vì lý do nào đó, BoundaryImposeition đã chỉnh sửa nó.)
Josh Friedlander

Tuy nhiên, tôi không nghĩ rằng nó đáp ứng yêu cầu tiền thưởng của Aibobot, nhưng đó là giữa bạn và anh ấy / cô ấy.
Josh Friedlander

2
@JoshFriedlander Rất vui khi được giúp đỡ! Tôi sẽ bổ sung thêm vào câu trả lời sau ... Đúng, tôi đã trò chuyện với JourneymanGeek (Aibobot), anh ấy sẽ chờ vài ngày để có câu trả lời mới.
rahuldottech

1
Dự án này có thể không có bất kỳ, nhưng lưu ý rằng hầu hết các dự án có thể sẽ có phụ thuộc , điều đó có nghĩa là nếu bạn đang đi theo lộ trình biên dịch, bạn có thể cần theo dõi các thư viện mà phần mềm phụ thuộc, tải xuống và cài đặt chúng ( hoặc biên dịch chúng là tốt). Nó thường không đơn giản như chỉ chạy tệp tạo tệp; một số trong số chúng thậm chí có thể có các tập lệnh xây dựng khác như cmake, cấu hình tập lệnh, v.v.
jrh

2
Là quá trình thực sự đơn giản trong hầu hết các trường hợp? Phần nào của tiện ích github đòi hỏi kiến ​​thức lớn hơn đáng kể để biên dịch chúng so với phần này bạn đã mô tả ở đây?
gaazkam

87

Bạn nhìn xung quanh và tìm trình cài đặt trên trang phát hành . Chắc chắn bạn có thể biên dịch nguồn, nhưng tôi không nghĩ đó là những gì bạn muốn.


49
Đã đồng ý. Nếu bạn phải hỏi, bạn không muốn biên dịch từ nguồn.
sấm sét

10
Nếu bạn phải hỏi, có lẽ bạn không nên cài đặt phần mềm chỉ có sẵn ở dạng nguồn ...
jpaugh

11
Tôi có khuynh hướng đồng ý với @jpaugh. Mặc dù rất có thể và đôi khi cần thiết để xây dựng từ nguồn, nhưng đó không phải là điều mà bạn có thể đi và hỏi "làm thế nào để tôi xây dựng chương trình C" theo cách chung. Có quá nhiều phương sai. Một số chương trình may mắn đơn giản như "biên dịch các tệp này". Những người khác cần makefiles. Một số phụ thuộc cần phải được tải xuống đầu tiên. Quá trình thiết lập để xây dựng có thể phức tạp và không nhất thiết phải thân thiện với người lập trình. Trên hết, mặc dù, bạn muốn tìm một tệp trong dự án giải thích cách xây dựng, vì các chi tiết cụ thể phụ thuộc vào dự án.
Kat

35
@jpaugh - Tôi muốn nói rằng bạn có cơ hội cài đặt phần mềm độc hại tốt hơn nhiều bằng cách tải xuống một tệp thực thi - phần mềm độc hại hiếm khi là nguồn mở.
tên

3
Giả sử bạn thực sự có thể đọc ngôn ngữ. Tôi thường xuyên biên dịch các công cụ trên linux và tôi không thể / không đọc bất kỳ nguồn nào. Ngay cả khi tôi có thể, tôi sẽ không xem xét every.single.line.
Journeyman Geek

66

Các tập tin .c và .h là mã nguồn C.

Bạn sẽ cần cài đặt một trình biên dịch C như Visual Studio, tcc hoặc một cái gì đó tương tự, tải dự án và sau đó biên dịch nó để chạy nó.

Không, dự án có một trang phát hành ( tại đây ) sẽ cho phép bạn truy cập vào phiên bản được biên dịch trước để tiết kiệm thời gian và công sức.


14
Nếu anh ta phải biên dịch nó thì nó thường được giải thích trong một readme, mà bạn thậm chí không đề cập đến anh ta nên tìm kiếm. Anh ta có nghĩa là đi đến trang phát hành, không chỉ là "thất bại (cài đặt trình biên dịch), mà anh ta nên đến trang phát hành"
barlop

3
mingw cũng phổ biến.
Zan Lynx

1
Một dự án cụ thể thường được tùy chỉnh để sử dụng với một bộ công cụ biên dịch cụ thể (được gọi là "toolchain") - dự án thường được đề cập trong tệp readme (trong các dự án UNIX và đa nền tảng, nó thường được đặt tên là BUILD hoặc INSTALL) . Trong các dự án được bảo trì ít hơn hoặc các dự án cho các môi trường chỉ có một vài bộ công cụ nổi tiếng, người dùng có thể đoán từ định dạng và / hoặc nội dung của các tệp dự án.
ivan_pozdeev

TCC? Có thật không? Bạn không nghiêm túc, phải không?
Yashas

18

Câu trả lời này sẽ giải quyết câu hỏi chung về việc xây dựng một ứng dụng Windows chỉ có nguồn (bằng C). Nếu bạn may mắn như OP, bạn có thể tìm thấy các tệp nhị phân được biên dịch sẵn.

Điều đầu tiên cần biết ở đây là không có cách duy nhất để xây dựng một ứng dụng từ nguồn. Có khoảng nhiều biến thể như có các dự án khác nhau. Điều đó nói rằng, đây là một số bước chung:

  1. Nếu bạn may mắn, dự án sẽ cung cấp hướng dẫn xây dựng, thường là trong READMEtệp. Đôi khi, cũng có thể có một INSTALLtập tin, hoặc tài liệu khác có sẵn. Nếu có sẵn, hãy làm theo hướng dẫn. Họ đặt cược tốt nhất của bạn.

    Như những người khác đã nói, thật không may, rất khó để xây dựng lại các bước xây dựng cần thiết mà không có hướng dẫn. Tuy nhiên, ít nhất chúng ta có thể thực hiện một nỗ lực tốt nhất ở đây, sẽ làm việc cho hầu hết các dự án đơn giản.

  2. Thiếu hướng dẫn, cổng gọi tiếp theo là kiểm tra công cụ xây dựng nào là bắt buộc.

    1. Nếu bạn tìm thấy một tệp có phần mở rộng .slnhoặc .vcxprojphần mở rộng, đây có thể là một dự án MSBuild / Visual Studio. Tải xuống một bản sao của Visual Studio Community hoặc Express (cho C ++), mở tệp dự án đó trong đó và nhấp vào nút phát trên thanh công cụ (hoặc sử dụng menu xây dựng).

    2. Nếu bạn tìm thấy một Makefile, điều này có thể sẽ yêu cầu make. Nhưng đây là nơi mọi thứ trở nên khó khăn hơn, vì có rất nhiều hệ thống độc lập và không tương thích sử dụng make.

      1. Vì nó được nhắm mục tiêu vào Windows, nên có lẽ nó sẽ sử dụng MinGW . Tải xuống một bản sao của nó, khởi chạy MSYS từ menu bắt đầu của bạn, điều hướng ( cd) đến thư mục chứa dự án của bạn và chạy make.

      2. Trong trường hợp hiếm hoi là Cygwin thay vào đó (không có cách nào dễ dàng để nói, thật không may, nhưng nếu MinGW xây dựng lỗi với lỗi liên quan đến "posix", thì đây là một vụ cá cược tốt), thay vào đó , bạn sẽ phải cài đặt Cygwin . Thật không may, điều này không xây dựng các nhị phân Windows gốc - bạn sẽ phải khởi chạy chương trình thông qua Cygwin mỗi lần.

    3. "Công cụ xây dựng" có thể là một tập lệnh tùy chỉnh theo tên build.bathoặc tương tự. Trong trường hợp này, bạn sẽ phải mở nó lên và xem những gì bên trong, hoặc thử chạy nó và xem lỗi là gì. Nếu bạn mở nó và thấy đề cập đến GCC, hãy quay lại bản 2.2.1. Bước MinGW nhưng chạy tập lệnh tùy chỉnh thay vì make.

  3. Có thể là không có công cụ xây dựng nào cả. Nếu tất cả những gì bạn gặp là một tập tin .choặc một .cpptập tin, thì nó có thể đủ đơn giản để bạn có thể biên dịch thẳng. Đây là, một lần nữa, hầu như luôn luôn là MinGW , vì vậy hãy tải xuống, khởi chạy trình bao MSYS, điều hướng đến thư mục và gọi một trong hai gcchoặc g++khi cần thiết - ví dụ:gcc -o program.exe program.c

  4. Có thể là không ai trong số này làm việc. Nếu bạn nhận được thông báo lỗi ở bất kỳ bước nào, chúng có thể chứa manh mối về những gì còn thiếu. Một khả năng là bạn đang thiếu một số khung hoặc thư viện cần thiết - nếu bạn cảm thấy như vậy, bạn có thể thử tải xuống và thêm chúng vào môi trường xây dựng của mình, nhưng đây thường không phải là một quá trình tầm thường và có quá nhiều biến thể không có cách để che chúng trong một câu trả lời.


Bảng chú giải

Xây dựng công cụ

Một công cụ xây dựng cho phép bạn xây dựng một dự án với rất ít lệnh. Đối với hầu hết các dự án có nhiều hơn một tệp nguồn, một công cụ xây dựng sẽ được tham gia ở đâu đó. Có một số công cụ xây dựng, nhưng phổ biến nhất là:

  • thực hiện , được sử dụng ở mọi nơi trên Linux và ngày càng phổ biến trên Windows. Các dự án sử dụng makethường có thể được xác định bởi sự hiện diện của a Makefile.

  • MSBuild dành riêng cho Windows và thường được thấy cùng với Visual Studio. Chúng thường sẽ được kèm theo một *.slnhoặc *.vcxprojtập tin.

Dụng cụ

Một toolchain là trình biên dịch và các công cụ hỗ trợ. Giống như các công cụ xây dựng, có một số và chúng thường được sử dụng với một trong các công cụ xây dựng.

  • MSVC là chuỗi công cụ của Microsoft. Đây là chuỗi công cụ phổ biến nhất để phát triển bản địa Windows. Điều này thường được sử dụng với hệ thống MSBuild và các bản dựng thường được tạo thông qua Visual Studio. Tuy nhiên, các dự án MSVC hiện đại cũng có thể sử dụng Makefile.

  • GCC ( MinGW ) là một cổng của GCC cho Windows. Thường được sử dụng với make. Nếu dự án được nhắm mục tiêu vào Windows nguyên bản và có một Makefile, thì đó có thể là cho MinGW-GCC.

  • GCC ( Cygwin ) tạo ra môi trường tương thích POSIX. Điều này cho phép bạn biên dịch trực tiếp hầu hết các chương trình được viết cho Linux hoặc Unix và để nó hoạt động trực tiếp trong Windows. Gần đây hơn trong Windows 10, Bash trên Ubuntu trên Windows là một sự thay thế. GCC thường được sử dụng kết hợp với make.

Khung và thư viện

Thư viện là các bộ mã có thể tái sử dụng được viết bởi người khác, mà nhiều chương trình phụ thuộc vào để tránh phát minh lại bánh xe. Bạn cần phải có những phụ thuộc này để xây dựng dự án. Nếu bạn may mắn, chúng sẽ được bao gồm trong lần tải xuống ban đầu của bạn, nhưng điều này không phải lúc nào cũng đúng.

Các khung có hiệu quả là một bộ sưu tập các thư viện. Nhiều dự án sử dụng một khung mà bạn cũng cần. Chúng thường đi kèm với hệ thống xây dựng riêng của họ, nhưng liệt kê tất cả chúng là không thể.

Phần khó nhất là xử lý các phụ thuộc thư viện và khung phụ. Nếu, giả sử, dự án sử dụng Qt - thì bạn sẽ cần toàn bộ mớ hỗn độn đó để xây dựng nó đúng cách. Đây là một công việc rất lớn và trừ khi bạn có kinh nghiệm trước đó, có lẽ tốt hơn là chỉ nhờ người khác giúp đỡ trực tiếp ở đây.


1
Trong trường hợp cụ thể này , tệp Makefile cung cấp cho bạn một đầu mối tốt rằng nó dành cho mingw như dòng đầu tiên là MINGW_PREFIX = $(shell which gcc | awk -F/bin/ '{ printf $$1 }'):)
DavidPostill

1
cái này xứng đáng với tiền thưởng imo
tbodt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.