国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

在Linux上如何運行Windows應用程序(1)
2006-08-30   easywine

2004 年 4 月

Wine 是一個令人神往而且目標遠大的開放源代碼項目,它嘗試去解決在 Linux 上運行 Windows 可執(zhí)行文件的復雜問題。盡管 Wine 不是一個新項目,但是,人們對 Linux 桌面的期望以及對 Linux 應用程序的需求日益增加,使得它現(xiàn)在仍具有重要意義。本文對 Wine 進行了介紹,并提出了幾種獲得 Wine 內部操作經驗的途徑。

Wine 項目起始于 1993 年,它的根源可以追溯到 90 年代早期出現(xiàn)的用于 UNIX 的 DOS 和 Windows 模擬器。Wine 項目最初是將 16 位的應用程序移植到 Linux,而幾年之后,已可以在 Linux 上運行 Microsoft Word 和 Excel。現(xiàn)在它有一百多萬行代碼。

人們一直認為,在桌面上采用 Linux 的主要障礙是應用程序不足。商用桌面應用程序供應商還不能確定他們是否應該投入時間和精力將他們的 Windows 應用程序移植到 Linux,他們基本上是在等待 Linux 大規(guī)模應用于桌面。另一方面,Linux 需要應用程序才能大規(guī)模應用于桌面。這是一個經典的先有雞還是先有蛋的問題,而 Wine 通過在 Linux 上運行現(xiàn)有的 Windows 應用程序而解決了這一問題。

Wine 能做什么

Wine 項目實際是一個二合一的項目。它們提供了一個名字叫做 Winelib 的開發(fā)工具包,用于將應用程序從 Windows 移植到 Linux(和 Unix);它們還提供了一個程序加載器,讓 Windows 二進制文件可以在 Unix 和類 Unix 系統(tǒng)中運行。本文討論的主要是后者;在 參考資料中有關于 Winelib 的更多資料的鏈接。

Wine 程序加載器讓運行于 x86 上的 Linux 和其他類 Unix 操作系統(tǒng)可以加載并運行 Windows x86 可執(zhí)行文件 -- 不過那只是它要解決的問題的一部分。因為 Windows 可執(zhí)行文件總是會鏈接到其他庫,而這些庫是 Windows 操作系統(tǒng)的一部分(如本文稍后圖 1 中的 Dependency Walker 截圖中可以看到),Wine 還最大可能限度地實現(xiàn)了那些 Windows 內部構件,即 Linux 上通常所指的 Win32 API5。

雖然 Windows 和 Linux 有很大的不同,但是就基本的層次而言,與任何現(xiàn)代操作系統(tǒng)一樣,還是有很多類似之處的 -- 比較明顯的包括,對文件和目錄的支持,對同時運行多個程序的支持,類似的用戶界面以及對多媒體的支持。

不是仿真器

據(jù) WineHQ的說法,“WINE 代表 Wine Is Not an Emulator(即,Wine 不是一個仿真器)。更確切地說,Wine 是 X 和 UNIX 之上對 Windows API 的一個開放源代碼實現(xiàn)。您可以認為它是一個 Window 兼容層。Wine 不需要 Microsoft Windows,因為它是由 100% 非 Microsoft 代碼構成的另一個實現(xiàn)。但是它可以使用本機系統(tǒng) DLL,只要這些 DLL 可用。而且它可以讓您在 Linux 或者其他類 UNIX 操作系統(tǒng)之上運行大部分 Windows 軟件。”

顯示了 callDLL.exe 的依賴,這個可執(zhí)行文件可以由本文提供的源代碼編譯得到。對一般的用戶而言,依賴的復雜度可能是驚人的,但對任何一個系統(tǒng)程序員來說都不是這樣,他們充分了解,哪怕是運行一個最簡單的程序,操作系統(tǒng)也必須要做很多事情。

考慮可執(zhí)行文件的第一個依賴 -- 對 USER32.DLL 的依賴。在 Windows 中,一個 DLL 就是一個動態(tài)鏈接庫(dynamically linked library),類似于 Linux 中的一個共享對象(一個 .so 文件)。USER32.DLL 文件通常會由操作系統(tǒng)提供,位于 C:\WINDOWS\system32 或者 C:\WINNT\system32 目錄下。這個文件中包含了 Windows API 中用于用戶界面的函數(shù)實現(xiàn)。

我們的可執(zhí)行文件調用 USER32.DLL 中的一些函數(shù),USER32.DLL 然后去調用 NTDLL.DLL 中的其他函數(shù),如此繼續(xù)。這些函數(shù)大部分已經由 Microsoft 文檔化 -- 但是還有很多沒有被文檔化。文檔的缺乏對 Wine 來說是一個極大的障礙,本文稍后將更詳細地討論這一問題。

現(xiàn)在讓我們來看我們的可執(zhí)行文件的第二個依賴 -- 對 SIMPLEDLL.DLL 的依賴。這個 DLL 是在編譯本文所附的源代碼時創(chuàng)建的。這個 DLL 中實現(xiàn)了一些特別簡單的函數(shù);它作為常見于安裝 CD 上的各種二進制文件的例子被包括進來。

如我們的例子所示,一般的 Windows 可執(zhí)行文件有兩種類型的依賴:一種是對操作系統(tǒng)提供的二進制文件的依賴,另一種是對作為應用程序一部分的二進制文件的依賴。

還需要特別注意的是,DLL 以難于管理而聞名,即使是在產生它們的 Windows 操作系統(tǒng)中也是如此(參見 參考資料)。值得一提的是,Wine 團隊成功地創(chuàng)建了一個可以在 Linux 上運行很多商用 Windows 應用程序的框架

當前,開放源代碼的 Wine 項目有一個健壯的平臺來運行 Windows 二進制文件以及對 Win32 API 的部分實現(xiàn)。這個項目仍然處于最初的測試階段(alpha),有很多部分還沒有完成。盡管 Wine 提供了一些工具來幫助進行配置、安裝以及運行應用程序,但是它們大部分都是面向程序員的,要讓非技術用戶也可以使用這些工具,還有很多事情需要去做。過去的 Corel 以及現(xiàn)在的 CodeWeavers 為此提供了很多幫助。

Wine 如何工作

既然我們已經理解了 Wine 的基本原理,讓我們更詳細地來研究 Wine 能夠做什么。本文中,我們討論的是 Wine 在純 Linux 上的安裝,沒有任何 Windows 分區(qū)。

Windows 可執(zhí)行文件:

Wine 完全支持 Windows 可執(zhí)行文件( .exe 和 DLL)的二進制加載。

DLL:

Wine 有幾百個 Windows DLL 的內部實現(xiàn) -- 不過,其中沒有多少是完全的實現(xiàn)。例如,包含有用戶界面相關函數(shù)的 userd32.dll 在開放源代碼的 Wine 中實現(xiàn)了 92%。

COM:

這是一種幾乎被所有的大型 Windows 應用程序所使用的 Windows 技術,它支持諸如將一個 Excel 電子數(shù)據(jù)表嵌入到 Word 文檔中等功能。這一技術得到了 Wine 的很好的支持。

注冊表:

這是另一個幾乎任何一個 Windows 應用程序都會使用的關鍵技術,Wine 實現(xiàn)了大約 90% 的 Windows 注冊表管理 API。

核心功能:

核心系統(tǒng)功能也得到了特別好的支持。如前面提到的,盡管 Linux 和 Windows 之間存在區(qū)別,但是基本的層次上還有很多類似之處,因此與進程、線程、文件和消息隊列相關的核心系統(tǒng) API 得到了近乎完美的支持。

音頻和視頻:

Wine 支持 Windows 音頻和視頻文件的運行(還可以使用 Windows 媒體播放器)。

打印:

也得到了支持,可以從一個在 Wine 中運行的 Windows 應用程序進行打印。

ODBC:

Wine 支持那些需要通過 ODBC 訪問數(shù)據(jù)庫的 Windows 應用程序。

調試:

Wine 有一個非常健壯和強大的內置調試器,除了支持標準的調試功能外,它還為調試運行于 Linux 上的 Windows 二進制程序進行了定制。它是 Wine 為其開發(fā)者提供的最重要工具之一。Wine 還有一個設計完備的追蹤和記錄日志的模塊,可以幫助調試。我們之所以強調這一點,原因在于,盡管框架是健壯的,但是,當在 Wine 中安裝和運行 Windows 應用程序時有很多不確定因素,在使用開放源代碼的 Wine 時遲早會停下來進行調試。

Wine 不能做什么

不幸的是,很多用戶發(fā)現(xiàn) Wine 難于使用。誠然,在 Linux 上使用類似于 MS Office 這樣的應用程序可能是困難的;在這里我們來看一些原因,為什么確實是這樣。在開始之前,我們應該指出,CodeWeavers 提供的商用 Wine 已經解決了大部分此類問題(參閱 參考資料以獲得鏈接)。假以時日,這些問題將可能在開放源代碼的 Wine 中同樣得到解決。

使用命令行與大部分 Linux 中的應用程序一樣,Wine 必須在命令行中安裝。用戶必須回到命令行中來在 Wine 下運行應用程序。例如,要運行Internet Explorer,用戶通常需要在 shell 中輸入 wine IEXPLORE.EXE 。盡管經驗豐富的用戶喜歡這樣做,但初學者會發(fā)現(xiàn)這比較困難,而且不太可能懂得起別名等快捷方式。

配置

CDROM 和驅動器映射等工作必須手工完成。這對初學者來說也是個問題。

取消對隱藏文件的隱藏

如果掛載 CDROM 時沒有使用專門的 unhide 選項,那么安裝 CD 上的一些文件可能會無法找到,從而導致安裝失敗。

調整配置

Wine 安裝很少能直接使用(對它來說也就是從 tarfile 解開)。通常需要進行全面的調整;例如,一個程序的安裝可能與您在配置文件中設置的 Windows 版本不相容;而修改那個版本又可能會影響一些已安裝的應用程序。對很多 DLL 來說也是如此。為此,Wine 提供了一個巧妙的修復,讓您可以設置特定于應用程序的屬性。不過,一般的用戶可能不會像我們一樣滿意。

額外的安裝步驟

大部分應用程序的安裝過程都不是標準的。例如,當我們安裝 Internet Explorer 6 時,必須跳過一些步驟,比如 DCOM98 的定位與安裝。對用戶來說,這類事情可能是最大的障礙。

注意,這些并不是病癥,而是舉例說明了是哪些種類的事情導致對一般用戶來說 Wine 看起來復雜而且困難。

熱詞搜索:

上一篇:雕蟲小技 教你嚇走想要動你電腦的人
下一篇:在Linux上如何運行Windows應用程序(2)

分享到: 收藏
国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区
欧美日韩在线播放三区| 色欧美日韩亚洲| 国产精品国产三级国产aⅴ原创| 成人av电影免费在线播放| 亚洲一区在线视频| 欧美电影免费观看高清完整版在| 日本欧美一区二区在线观看| 国产精品成人在线观看| 91精品综合久久久久久| 91丨porny丨国产| 日韩影院在线观看| 国产精品水嫩水嫩| 精品三级av在线| 色婷婷国产精品| 成人黄色免费短视频| 亚洲欧洲韩国日本视频| 91精品国产入口| 91免费视频观看| 国产美女久久久久| 同产精品九九九| 国产精品日韩精品欧美在线| 日韩精品一区二区在线| 91日韩在线专区| 成人动漫av在线| 久久99蜜桃精品| 亚洲视频一区在线| 中文字幕精品综合| 精品奇米国产一区二区三区| 884aa四虎影成人精品一区| 床上的激情91.| 亚洲综合视频在线观看| 亚洲人成影院在线观看| 久久综合资源网| 精品国产欧美一区二区| 在线视频欧美区| 不卡视频免费播放| 国产suv一区二区三区88区| 奇米色一区二区三区四区| 石原莉奈一区二区三区在线观看| 国产精品久久久久久久久免费丝袜| 久久精品免费在线观看| 欧美videos大乳护士334| 在线观看91视频| 欧美色手机在线观看| 99re成人精品视频| 成人黄色片在线观看| 国产成人精品三级| 国产麻豆9l精品三级站| 天堂va蜜桃一区二区三区| 一区二区三区免费在线观看| 久久综合久久综合亚洲| 日韩欧美一级精品久久| 欧美一区二区三区四区五区| 在线视频中文字幕一区二区| 色国产综合视频| www.欧美亚洲| 日本韩国视频一区二区| 99久久精品情趣| 91丨porny丨最新| 91丨九色丨蝌蚪富婆spa| 欧美中文字幕不卡| 91日韩一区二区三区| 91免费观看视频| 欧美日韩亚洲综合| 欧美亚洲一区三区| 日韩一区二区在线播放| 欧美tickling挠脚心丨vk| 国产三级精品视频| 国产精品电影院| 一区二区成人在线视频| 午夜婷婷国产麻豆精品| 午夜精品久久久久久| 精品一区二区国语对白| 日韩黄色片在线观看| 蜜臀国产一区二区三区在线播放| 久久精品国产99国产| 国产精品综合久久| 91亚洲资源网| 91精品在线观看入口| 91精品中文字幕一区二区三区| 国产三级精品视频| 自拍偷自拍亚洲精品播放| 日韩av电影免费观看高清完整版| 日韩成人免费看| 成人性生交大片免费看视频在线| 97精品超碰一区二区三区| 777精品伊人久久久久大香线蕉| 91精品国产欧美一区二区18 | 一区二区三区在线观看国产| 亚洲成人第一页| 国产制服丝袜一区| 欧美在线免费观看亚洲| 欧美mv日韩mv| 亚洲综合男人的天堂| 精品影院一区二区久久久| 99国产精品一区| 精品国产成人系列| 国产精品成人在线观看| 久久成人综合网| 99久久婷婷国产综合精品电影| 日韩精品中文字幕在线一区| 国产色91在线| 亚洲国产三级在线| 成人三级在线视频| 欧美一级日韩一级| 国产精品久久久久久久第一福利| 另类成人小视频在线| 一本到高清视频免费精品| 国产酒店精品激情| 日韩一区二区免费在线电影| 国产三级精品视频| 久久99国产乱子伦精品免费| 91视频观看免费| 欧美国产日本视频| 喷水一区二区三区| 欧美日本不卡视频| 国产精品欧美一区二区三区| 亚洲成人黄色影院| 成人高清免费在线播放| 欧美色中文字幕| 玉足女爽爽91| 豆国产96在线|亚洲| 精品久久人人做人人爽| 一区二区不卡在线视频 午夜欧美不卡在| 国产精品羞羞答答xxdd| 欧美一个色资源| 日韩专区中文字幕一区二区| 99久久久久免费精品国产| 国产女人18水真多18精品一级做| 蜜桃av一区二区| 在线这里只有精品| 亚洲精品午夜久久久| 高清成人在线观看| 国产免费久久精品| 免费av网站大全久久| 日韩视频永久免费| 午夜精品免费在线| 9191久久久久久久久久久| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲丝袜精品丝袜在线| 卡一卡二国产精品 | 国产成人av电影| 2020国产精品| 免播放器亚洲一区| 欧美不卡在线视频| 强制捆绑调教一区二区| 日韩精品中文字幕一区| 午夜影院久久久| 欧美一区二区精品在线| 亚洲aaa精品| 91精品婷婷国产综合久久| 天天射综合影视| 9191久久久久久久久久久| 日韩国产欧美在线视频| 色偷偷一区二区三区| 亚洲高清免费视频| 欧美美女一区二区| 久久国内精品视频| 久久毛片高清国产| 91色.com| 亚洲高清免费观看| 精品国产区一区| 国产精品自拍三区| 三级久久三级久久久| 欧美日韩国产在线观看| 蜜臀久久99精品久久久画质超高清| 日韩一区二区麻豆国产| 午夜精品久久久久久久99樱桃| 5月丁香婷婷综合| 三级不卡在线观看| 久久久亚洲精品一区二区三区| 国产精品1024| 亚洲综合免费观看高清完整版 | 国产色一区二区| 成人黄色在线网站| 亚洲午夜影视影院在线观看| 91精品久久久久久蜜臀| 国产成人亚洲精品青草天美| 国产精品久久久久久久久久免费看| 在线视频你懂得一区| 日韩av一二三| 日韩码欧中文字| 777色狠狠一区二区三区| 高清国产一区二区三区| 亚洲精品高清视频在线观看| 日韩一区二区三| 99在线精品免费| 久久精品999| 亚洲欧美国产三级| 欧美日韩精品一区二区在线播放| 加勒比av一区二区| 国产清纯在线一区二区www| 一本一道久久a久久精品| 日韩福利电影在线观看| 国产日韩亚洲欧美综合| 在线观看视频91| 国产在线麻豆精品观看| 亚洲色图.com| 欧美高清在线视频| 欧美日韩国产在线播放网站|