当前位置: 首页 > news >正文

Wine零知识学习4 —— Wine编译进阶详解

本系列第3篇文章Wine零知识学习3 —— Winetricks介绍及下载和运行讲述了Wentricks的下载及使用。在Winetricks的使用过程中会发现很多应用下载会出现问题,会提示32位程序无法运行在64位系统上。为什么会出现这个问题?又如何解决此问题?这就是本文要讲的内容。

第2篇文章Wine零知识学习2 —— 源码下载、构建与安装详述了Wine的下载及编译安装步骤。实际上那只是几种编译Wine的方式中相对简单的一种。下边列出Wine官网中对于编译Wine的详细说明以及其它几种方法。参考链接为:Building Wine - WineHQ Wiki。

方法1. Plain Vanilla Compiling —— 普通编译

如果你打算在与你构建相同的32位架构上运行Wine,那么你是幸运的:事情将会非常简单。

注意:如果你只是想要在具有64位发行版的公共硬件上编译Wine,你需要执行一个WOW64构建(详见下边)。

安装好所有的构建必要条件:

(1)切换到你要编译wine的目录

(2)在那里,调用你(下载并放置)的wine源码目录中的配置脚本

(3)在那之后,在你的构建目录中执行make

(4)如果make成功完成,则你可以使用make install命令安装wine到你的系统中

对应的操作步骤为在命令行中执行如下命令:

cd ~/wine-dirs/wine-build/
../wine-source/configure
make
make install

推测目录结构为:

wine-dirs| -- wine-build| -- wine-source

最后一步完全由你自行决定:你可以完全在构建路径运行wine而无需安装。如果你通过make安装了wine,请确保你没有其它版本的wine已安装。覆盖安装不会损坏你的系统,但可以使你的库和包管理严重地纠缠在一起。

方法2. 64位编译

If you're on a 64-bit system, all you need to do to build a 64-bit wine is pass --enable-win64 to the configure script when you run the above commands:

如果你在64位系统上运行wine,对于编译64位的wine,你需要做的全部是传递--enable-win64选项到配置脚本,在你运行以上命令时。命令如下:

../wine-source/configure --enable-win64

这样做的问题是,构建本身将只允许运行为在64位Windows上运行而编译的应用程序。由于绝大多数Windows应用是32位的,你很可能要遵循下边的WOW64指导步骤(操作指南)。

方法3. Shared WoW64 —— 共享32位编译

当Windows开始面向64位架构时,微软决定包含一个兼容层以支持他们的大量的32位应用。这种子组件,昵称为WOW64(对于在64位Windows上运行的窗口),也在Wine中被实现了,以解决完全相同的问题。

注意:没带32位支持而构建的64位Wine将无法运行任何32位应用程序,绝大多数的Windows二进制都是32位应用程序。甚至大多数64位程序仍然包含32位部件!

提示:64位Wine已在少数操作系统上正常工作了,但是如果你想帮助将Wine移植到其它AMD64,我们很乐意得到你的帮助。

好消息是一旦你在适当的位置具有了编译32位和64位Wine的依赖,你已经完成了困难的部分。如果你拥有了多功能库的全部依赖或者(在将来的某个好日子)你一道安装了多架构的所有依赖,你只需要按照以下两个步骤进行操作:

(1)首先编译64位版本的Wine带有--enable-win64配置标志,当然,在一个单独的构建目录中

(2)接下来当你构建32位版本时(在一个新的构建目录下再次编译),指向配置到64位构建目录,通过使用--with-wine64=相对路径

对应的操作步骤为在命令行中执行如下命令:

(1)首先编译64位版本的Wine

cd ~/wine-dirs/wine64-build/
../wine-source/configure --enable-win64
make

(2)然后编译32位版本的Wine

cd ~/wine-dirs/wine32-build/
PKG_CONFIG_PATH=/path/to/pkgconfig ../wine-source/configure --with-wine64=../wine64-build
make

推测目录结构为:

wine-dirs| -- wine32-build| -- wine64-build| -- wine-source

PKG_CONFIG_PATH应该指向32位pkgconfig文件的位置,很可能是/usr/lib或/usr/lib32。不带这个参数,配置脚本将使用64位文件并且在32位构建中禁止gstreamer支持。

When you make the 32-bit version of Wine, the build process should inject whatever libraries the 64-bit version needs to handle 32-bit programs. After that, just run wine from the 64-bit build to have WoW64 features.

当你制作32位版本的Wine,构建过程应该注入64位版本处理32位程序所需的任何库。在此之后,只从64位版本构建中运行wine以拥有WoW64特性。

http://www.lryc.cn/news/9322.html

相关文章:

  • win10-右键打开windows terminal
  • 关于使用CMT2300A FIFO缓存区间设置为64Byte的问题
  • 网页概念、常用浏览器及内核、Web标准
  • 【刷题笔记】--搜索二维矩阵 II
  • uni-app实战教程
  • SpringCloud: sentinel降级配置、热点参数、系统规则 配置到nacos
  • 交换机之配置netsflow
  • 非科班出身学习软件测试可以么
  • 面试已上岸,成功拿到阿里和腾讯的入职offer,Java程序员面经全在这了,希望能帮到你!
  • Redisson分布式锁
  • LOF(Local Outlier Factor)原理
  • [ vulhub漏洞复现篇 ] Drupal<7.32 Drupalgeddon SQL注入漏洞(CVE-2014-3704)
  • Part 4 描述性统计分析(占比 10%)——下
  • 【一般人不会告诉你】比肩chatgtp的5款AI网站
  • LA@相似方阵和对角化
  • 存储类别、链接与内存管理(二)
  • JavaScript 入门教程||javascript 简介||JavaScript 用法
  • 新闻稿写作指南
  • 一文详解Redis持久化的两种方案
  • 第六章 - 数据过滤where(where与and和or的组合用法)
  • Oracle 定时任务例子
  • Android常用9种自动化测试框架对比,Appium有哪些优势?
  • 在vue2使用百度脑图的kityminder-core进行二次开发思维导图,给节点绑定数据后添加新的图标
  • FPGA时序约束与分析 --- 时序约束概述
  • 2022——寒假总结
  • C++11 Lambda表达式
  • 冰湖灾害遥感监测评价与模拟分析
  • Highcharts.Chart
  • 遍历map的几种方法
  • RocketMQ源码分析之Broker概述与同步消息发送原理与高可用设计及思考