Computer >> Máy Tính >  >> Hệ thống >> Windows

Cách biên dịch chương trình Linux trong Windows với Cygwin

Cách biên dịch chương trình Linux trong Windows với Cygwin

Cách biên dịch chương trình Linux trong Windows với Cygwin Windows và Linux là hai hệ thống rất khác nhau và do đó, việc chuyển các chương trình đã viết thường không dễ dàng. cho cái này với cái khác, đặc biệt là khi xử lý các chương trình GUI. Mặc dù có nhiều thư viện và SDK đa nền tảng khác nhau, nhưng các chương trình gốc được viết mà không tính đến tính di động sẽ khá khó chuyển.

Khi nói đến việc biên dịch và chạy các chương trình được viết cho Linux trên Windows, có một giải pháp được gọi là Cygwin. Dự án Cygwin là tập hợp các công cụ và trình biên dịch phổ biến nhất (bao gồm bash shell và chuỗi trình biên dịch GNU) dành cho Windows. Nó cũng bao gồm một thư viện cung cấp một lớp tương thích để các chương trình gọi các API cụ thể của Linux có thể được biên dịch. Cygwin không phải là một trình giả lập hay máy ảo và nó không cho phép các tệp nhị phân Linux chạy trên Windows mà không cần được biên dịch lại trước.

Truy cập trang cài đặt Cygwin và tải xuống tệp thực thi thiết lập 32 bit hoặc 64 bit (tùy thuộc vào phiên bản Windows bạn đang sử dụng). Thực hiện chương trình thiết lập. Nhấp vào Tiếp theo và Tiếp theo một lần nữa (để “Cài đặt từ Internet”). Thư mục mặc định là “C:\ cygwin”. Nó có thể được thay đổi nếu cần, nhưng trừ khi bạn có một lý do cụ thể để thay đổi nó, thì tốt nhất là mặc định. Nhấp vào Tiếp theo, Tiếp theo và Tiếp theo một lần nữa.

Dự án Cygwin có các trang nhân bản trên khắp thế giới; chọn một địa chỉ mà bạn nghĩ sẽ phục vụ tốt nhất cho vị trí của mình và nhấp vào Tiếp theo. Bây giờ bạn cần chọn gói để cài đặt. Để biên dịch các chương trình Linux đơn giản trong Windows, bạn sẽ cần Chuỗi trình biên dịch GNU (GCC) cung cấp trình biên dịch C và C ++.

Cách biên dịch chương trình Linux trong Windows với Cygwin

Nhập “gcc” vào hộp tìm kiếm, sau đó nhấp vào dấu cộng nhỏ bên cạnh “Devel” trong danh sách các gói. Tìm “gcc-core” và “gcc-g ++” và nhấp vào “Bỏ qua” cho từng cái. Từ “Bỏ qua” sẽ thay đổi thành số phiên bản và ký hiệu “n / a” trong “Thùng rác?” cột sẽ chuyển thành một hộp kiểm. Nhập “make” vào hộp tìm kiếm và tìm “make” trong “Devel”. Nhấp vào “Bỏ qua” để đánh dấu nó để cài đặt. Tìm kiếm “wget” và cũng đánh dấu nó để cài đặt từ “Web”. Để xây dựng ví dụ dưới đây, chúng tôi cũng sẽ cần “libiconv;” tìm kiếm nó và đánh dấu nó để cài đặt.

Cách biên dịch chương trình Linux trong Windows với Cygwin

Bấm tiếp. Sau đó, trình cài đặt sẽ xem những gói nào khác cần được cài đặt để giải quyết bất kỳ sự phụ thuộc nào. Nhấp vào Tiếp theo để chấp nhận các đề xuất.

Khi tất cả các gói đã được tải xuống và cài đặt, hãy làm theo các bước cuối cùng cho đến khi trình cài đặt thoát. Khởi động “Cygwin Terminal” để tham gia vào môi trường phát triển giống Linux. Trong terminal, bạn không sử dụng các lệnh Windows như “dir” mà sử dụng các lệnh shell như “ls”.

Để trình bày cách biên dịch một chương trình Linux trong Windows, chúng tôi sẽ sử dụng gói HTML-XML từ W3. Để biết những gì nó có thể làm, hãy xem Cách thao tác với tệp HTML và XML từ Dòng lệnh.

Tải xuống các tệp nguồn bằng “wget”:

wget https://www.w3.org/Tools/HTML-XML-utils/html-xml-utils-6.7.tar.gz

Bây giờ hãy giải nén tệp lưu trữ:

tar -zxf html-xml-utils-6.7.tar.gz

Các tệp nguồn hiện nằm trong thư mục “html-xml-utils-6.7”. Nhập thư mục đó:

cd html-xml-utils-6.7

Trước khi có thể tạo tệp, bạn cần chạy tập lệnh shell “config” để tạo Makefile (hướng dẫn xây dựng) phù hợp với môi trường xây dựng này. Đây là bước phổ biến trên Linux (và Cygwin) khi xây dựng các gói từ nguồn.

./configure

Cách biên dịch chương trình Linux trong Windows với Cygwin

Sau khi "cấu hình" hoàn tất, bạn có thể bắt đầu xây dựng bằng cách sử dụng "make":

make

Quá trình xây dựng sẽ thất bại một phần. Tôi luôn suy nghĩ về việc phải làm gì tiếp theo. Hoặc tôi có thể chuyển sang một dự án khác và xây dựng dự án đó từ nguồn của nó hoặc tiếp tục chiến đấu với HTML-XML-utils. Tôi đã chọn cái thứ hai vì nó cho thấy rằng không phải mọi thứ sẽ là một bước đi trong công viên khi cố gắng biên dịch các chương trình Linux dưới Cygwin. Giải pháp cho vấn đề cụ thể này rất đơn giản. Thông báo lỗi cho thấy trình liên kết không thể tìm thấy thư viện “iconv”. Xem nhanh lệnh liên kết cho thấy rằng thư viện không được chỉ định. Giải pháp nhanh chóng và hiệu quả là chạy lệnh theo cách thủ công và yêu cầu trình liên kết sử dụng libconv. Cách "thích hợp" để khắc phục điều này là bắt đầu tìm hiểu sâu về Makefile, v.v. để tìm hiểu lý do tại sao nó không hoạt động.

Cách biên dịch chương trình Linux trong Windows với Cygwin

Chạy lệnh sau, lưu ý việc bao gồm “-liconv” ở cuối:

gcc -g -O2 -o hxindex.exe hxindex.o scan.o html.o openurl.o url.o heap.o class.o errexit.o connectsock.o types.o tree.o genid.o dtd.o headers.o dict.o fopencookie.o -liconv

Sau khi tệp “hxindex.exe” được tạo, bạn có thể tiếp tục với phần còn lại của bản dựng bằng cách gõ lại “make”. Cách thức hoạt động của “chế tạo” là nó kiểm tra những gì đã và chưa được xây dựng, sau đó nó tiếp tục quá trình xây dựng tại điểm thích hợp. Vì chúng tôi đã tạo “hxindex.exe” theo cách thủ công, nên “make” chỉ tiếp tục với tệp nhị phân tiếp theo trong danh sách của nó.

Khi hoàn tất "make", bạn sẽ có tất cả các tệp .exe trong thư mục html-xml-utils-6.7.

Nếu bạn gặp khó khăn khi sử dụng Cygwin, bạn nên xem phần Câu hỏi thường gặp và tài liệu hướng dẫn. Không đạt được điều đó, dự án có một tập hợp các danh sách gửi thư. Nếu bạn gặp bất kỳ vấn đề nào với các bước được mô tả ở trên, vui lòng sử dụng phần nhận xét bên dưới.