我們可以編譯windows程序的原始碼嗎?
請原諒我缺乏專業知識,但我想知道是否可以編譯開源 Windows 程序的原始碼,並且可以在 Linux 上使用它的執行檔(沒有 Wine)。就我而言,它是Ant Renamer,我目前與 Wine 一起使用(我對 Linux 替代品不滿意,它缺乏一些高級功能或 GUI)。
最簡潔的答案是不。更長的答案通常不是。這取決於程序所依賴的庫。
根據編寫程序的語言,編譯器或解釋器附帶的標準庫可能包含或多或少的功能。C是一種普遍存在的語言,因為只有極不尋常的平台才會缺少 C 編譯器,它的標準庫非常小。例如,它有文件 I/O 的概念,但沒有目錄,它的使用者界面僅限於標準輸入、標準輸出和標準錯誤。其他任何事情都需要對作業系統進行假設或使用第三方庫。一些語言選擇堅持 C 在其標準庫中可以做的事情,以便他們的標準庫可以在 C 執行的任何地方執行。
其他程式語言在其標準庫中提供了更多功能,並且可能具有至少在 Unix 和 Windows 之間可移植的事實上的標準第三方庫。可移植不是指相同的庫程式碼在兩者上執行,而是指有一個 Windows 實現和一個 Unix 實現,並且使用該庫的程序不需要關心使用的是哪一個。例如,Python的標準庫具有管理文件和目錄的介面,並帶有一些基本的 GUI 庫(不像可以做的那樣漂亮或複雜,但它們是可移植的並且使用起來相對簡單);此外還有一些更高級的可移植第三方庫。
Unix 和 Windows 都有許多其他系統不具備的功能,或者工作方式大不相同。圖形使用者界面的工作方式非常不同。一些 Unix 庫已經移植到 Windows,但 Windows 的介面還沒有移植到 Unix。Windows GUI 程式碼更多地集成到作業系統中(Unix 的 GUI 從一開始就設計在不同的層中),並且是專有程式碼(來自 Unix 世界的庫大多是開源的),所以它們會非常困難移植到 Unix:您基本上必須在虛擬機中執行 Windows。Wine 試圖提供 Windows 庫的獨立實現,但這是一項非常困難的工作。
Ant Renamer 是用 Pascal 方言編寫的,這些工具是為 Windows 開發的,即Delphi。在某個時候有一個Linux 埠,但我不知道它有多成功。尤其是 GUI 庫,必須從 Windows 界面重寫為某些 Unix 界面。實際的答案是,如果 Ant Renamer 可以在 Linux 上執行,則需要付出巨大的努力,可能比基於對其行為的精確描述從頭開始編寫它要多。
為了那些在搜尋中發現這個問題但遇到不同問題的人 - 您可以使用 Unix 機器從 Windows 程序編譯原始碼以在 Windows 機器上執行,使用交叉編譯器,例如mingw。