Windows và Linux là hai hệ thống rất khác nhau, và như vậy, nó thường không phải là dễ dàng để các chương trình cổng được viết cho một, khác, đặc biệt là khi giao dịch với 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 có tính di động trong đầu thì 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à một tập hợp các công cụ và trình biên dịch phổ biến nhất (bao gồm cả bash shell và chuỗi trình biên dịch GNU) 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à trình giả lập hoặc 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 biên dịch lại lần đầu tiên.

Truy cập trang cài đặt Cygwin và tải xuống bản cài đặt 32 bit hoặc 64 bit (tùy thuộc vào biến thể của Windows bạn đang sử dụng). Thực thi chương trình cài đặt. Nhấn Next và Next 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 thiết, nhưng trừ khi bạn có một lý do cụ thể để thay đổi nó, mặc định là tốt nhất. Nhấn Next, Next và Next lần nữa.

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

Nhập “gcc” vào hộp tìm kiếm và 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 “Skip” cho mỗi cái. Từ "Bỏ qua" sẽ thay đổi thành số phiên bản và dấu "n / a" trong cột "Bin?" Sẽ chuyển thành hộp được chọn. Gõ “make” vào hộp tìm kiếm và tìm “make” trong “Devel.” Nhấp “Skip” để đá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ụ bên dưới, chúng tôi cũng sẽ cần "libiconv;" tìm kiếm và đánh dấu nó để cài đặt.

Bấm tiếp. Sau đó trình cài đặt sẽ xem những gói 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 đề 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. Bắt đầu “Cygwin Terminal” để tham gia vào môi trường phát triển giống như Linux. Trong terminal bạn không sử dụng các lệnh Windows như “dir” mà là các lệnh shell như “ls”.

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

Tải xuống các tệp nguồn bằng cách sử dụng "wget":

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

Bây giờ 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ác tập tin có thể được xây dựng, bạn cần chạy kịch bản lệnh "cấu hình" để tạo ra các Makefile (các 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à một bước phổ biến trên Linux (và Cygwin) khi xây dựng các gói từ nguồn.

 ./configure 

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":

 chế tạo 

Việc xây dựng sẽ thất bại một phần thông qua. Tôi đã có hai suy nghĩ về việc phải làm gì tiếp theo. Hoặc là tôi có thể chuyển sang một dự án khác và xây dựng nó từ nguồn của nó hoặc chiến đấu với các HTML-XML-utils. Tôi đã chọn phương án thứ hai vì nó cho thấy rằng không phải mọi thứ sẽ là công viên đi bộ 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 rằng 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 thư viện không được chỉ định. Giải pháp nhanh chóng và dơ bẩn là chạy lệnh thủ công và yêu cầu trình liên kết sử dụng libconv. Cách "thích hợp" để sửa lỗi này sẽ là bắt đầu delving vào Makefile vv để tìm hiểu lý do tại sao nó không hoạt động.

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 connectock.o types.o tree.o genid.o dtd.o tiêu đề .o dict.o fopencookie.o -liconv 

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 nhập “make” một lần nữa. Cách "làm" công trình là nó kiểm tra những gì đã và chưa được xây dựng, và sau đó nó tiếp tục quá trình xây dựng tại điểm thích hợp. Vì chúng ta đã xây dựng “hxindex.exe” theo cách thủ công, nên “make” chỉ tiếp tục với nhị phân tiếp theo trong danh sách của nó.

Khi “hoàn thành”, 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 các câu hỏi thường gặp và tại tài liệu hướng dẫn. Nếu không, dự án có một bộ 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, thì hãy sử dụng phần bình luận bên dưới.