Chương trình gốc không tương thích vì Windows có một bộ API hoàn toàn khác với Linux, cho một. Như những người khác đã đề cập, mỗi nền tảng sử dụng một định dạng thực thi khác nhau là tốt. Ngoài ra cả hai nền tảng có bộ thư viện riêng của họ mà các chương trình sẽ được liên kết với và/hoặc chia sẻ. Ví dụ, một chương trình Windows thường sẽ được phát triển trong Visual Studio bằng cách sử dụng các thư viện cửa sổ cụ thể như MFC
, Win32
API, v.v. Các thư viện này không có sẵn trong linux, vì vậy chương trình sẽ không biên dịch trừ khi cẩn thận được thực hiện để đảm bảo chéo các thư viện nền tảng (như QT) được sử dụng.
Nếu bạn cẩn thận, tuy nhiên, bạn có thể sử dụng các thư viện đa nền tảng trong mã của mình và bạn có thể có cùng một chương trình để biên dịch trong cả hai nền tảng. Đối với một chương trình như vậy bạn sẽ cần phải cẩn thận đặt bất kỳ chi tiết nền tảng cụ thể (vị trí hệ thống tệp, vv) trong các tệp của riêng chúng. Sau đó, bạn sẽ cần thiết lập các câu lệnh #define
thích hợp và/hoặc chỉ thị makefile để đảm bảo các tệp thích hợp được bao gồm trong bản dựng cho mỗi nền tảng. Tất nhiên, nếu bạn sử dụng ngôn ngữ "đa nền tảng" như Java hoặc Python và không sử dụng bất kỳ mã nền tảng cụ thể nào trong quá trình triển khai, thì chương trình của bạn có thể chạy trong cả hai môi trường.
Note Mặc dù các định dạng thực thi khác nhau, một số chương trình phát triển trên Windows có thể được thực hiện dưới Linux sử dụng một giả lập gọi WINE.
Nguồn
2010-02-28 02:37:06
http: // sf.net/projects/line/"thực hiện các ứng dụng Linux chưa được sửa đổi trên Windows bằng cách chặn các cuộc gọi hệ thống Linux" - nghịch đảo của Wine. Tuy nhiên, nó không được duy trì trong một thời gian dài. – ephemient
Cool ... thật đáng tiếc là họ không duy trì nó. Bạn đã thử nhận được bất kỳ chương trình nào để chạy dưới nó? –
Không, tôi không sử dụng Windows, vì vậy tôi chưa bao giờ thử LINE. Tôi nghe nói rằng một số mã đã được xếp thành http://umlwin32.sf.net/ (trong đó, tình cờ, cũng giống như nghịch đảo của http://ring3k.org/), nhưng điều đó cũng không được duy trì. Tôi không thấy nhiều điểm, hoặc là: hầu hết mọi thứ trên Linux đều có sẵn nguồn, vì vậy nó dễ dàng hơn để chỉ cổng và biên dịch lại hơn là làm việc trên các hack như thế này. – ephemient