(三):Winelib用户手册2

简介: 版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49588353 3.3 一步一步的指导下面我们详细地来追踪一下上面的步骤。
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49588353

3.3 一步一步的指导

下面我们详细地来追踪一下上面的步骤。

1): 获取源码

首先,你应该试着获取包括他们构建的可执行文件/库在内的源码。如果你没有可用的Visual C++项目文件,Winemaker能够帮助他猜测你的项目要构建成什么。他能够理解Visual C++项目。通常情况下,可执行文件/库文件位于源码中的Release或者是Debug子目录中。所以,你能够讲这些源码文件和这些目录转换到Linux中是最好的。注意,没有必要去转换.obj,.pch,.sbr和位于这些目录中的文件。

2): cd root_dir

然后进入你的源码的根目录中。winemaker能够一次就处理所有的文件结构,所以你不必进入子目录。当一个目录需要makefile文件的话,winemaker将会自动生成该文件,并且会生成一个全局的makefile文件,以便你能够仅仅使用一个make命令就能够重新构建所有的可执行文件和库文件。

3): 使源码可写

然后,确保你对你的源码有写权限。这听上去是很明显的,但是如果你从一个CD中复制来的源码或者这些源码在Windows中是源代码安全的话,很可能出现他们是只读的。但是Winemaker需要写权限所以他能够修复他们。你可以使用”chmod -R u+w .”来重新修改权限。你也可能想要确保由一份源码的备份以防出现错误,我们会在后面的点中提供参考。你过是使用了版本控制系统,你已经被覆盖了。

如果你已经对源码进行了修改,并且你不想winemaker对他们做出修改了,你可以使用 –nosource-fix选项来保护他们。

4): 运行winemaker

然后就是运行winemaker.下面是一些你可能会用到的选项。如果你想要查看所有的选项的话,你查看man手册。

--lower-uppercase, --lower-all
这个选项指定了如何去处理带有“不正确的”大小写的文件和目录。--lower-uppercase指定了,如果他们的名称全都是大写的,他们需要被重新命名。所以例如Hello.c这样有混合大小写名称的文件不会被重命名。--lower-all将会对所有的文件重命名。如果没有指定的话,文件或者是目录都将不会被重命名。正如后面看到的,winemaker可能依然需要去给一些文件重命名。   

--nobackup
Winemaker在 进行Windows到Unix转换的时候,通常会备份所有的文件。如果你已经有备份了,不用重新进行备份了,那么你就应该使用这个选项。

--dll, --console
这个选项能够使winemaker知道你正在构建的是什么类型的目标。如果在你的源码结构中存在windows的库,那么你不必指定--dll。但是,如果你有控制台科执行程序,那么你需要使用相应的选项。

--mfc
该选项告诉winemaker,你正在构建一个MFC应用/库

-Dmacro[=defn], -Idir, -Ldir, -idll, -llibrary
-i通过文件机制的规格指定了一个Winelib库。与选项-l相比,该选项指定一个Unix库去链接。其他的选项都是一样的工作方式。所有的选项都应用在所有的目标中。当使用-l或者是-L指定一个目录的            时候,winemaker会使用$(TOPDIRECTORY)/来修复一下相对路径,所以,他对任何源码路径来说都是有效的。如果你想的话,你也可以在路径中使用能够一个变量(不要忘记加上$符号)。举个例子,你可以指定-l\$(WINELIB_INCLUDE_ROOT)/msvcrt。

所以,你的命令最终就像是这样的:winemaker –lower-uppercase -lmylib/include。

5): 文件重命名

当你运行winemaker的时候,他首先会按照你的期望重新规整命名的大小写,所以他们将会被makefile文件处理。后面就会指明一个没有小写扩展名的文件将会被重新命名,所以,扩展名应该用小写,HELLO.C将会被重命名位HELLO.c。如果一个文件或者是一个目录的名称包含一个空格或者是一个$字符,这个字符将会被下横线替代。这是因为这些字符在autoconf(2.13)版本和make(3.79)版本中会导致问题。

6):源代码修改和makefile文件生成

winemaker将会处理修改的源文件以便他们能够使用Winelib编译。如果他们猜测到或者是发现一个不正确的问题的时候,他将会打印出警告信息。最终会生成makefile文件。一旦这些工作完成了,你可以使用diff -uw来查看winemaker对这些文件做的改变。例如:diff -uw hello.c.bak hello.c

7): 运行make

这是一个非常简单的一步:仅仅是敲击make然后瞧,你应该会生成所有的你的可执行文件和库文件。如果运行不成功,意味着你需要接着讲本文读下去。  

重新审视一下makefile文件,猜测winemaker想要如何去编译你的二进制文件,哪一个源码文件应该被使用。查看Winemaker的源码分析来寻找一些提示。

修改你的源码的可移植性的问题。

这里写图片描述

目录
相关文章
|
编译器 Linux 调度
makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS
makfile的编译选项:CFLAGS、CPPFLAGS、LDFLAGS、LIBS
2870 0
|
12月前
|
存储 Android开发 网络架构
点心云-N1盒子、机顶盒、手机等设备-小白保姆式刷机教程
本文介绍了N1盒子的刷机教程,包括未刷机和已刷其他系统的N1。教程详细列出了所需工具和具体步骤,如下载工具包、制作安装盘、打开ADB模式、降级、刷入新系统等,确保用户能够顺利完成刷机操作。对于已刷第三方系统的N1,还提供了解决USB线不被识别、驱动问题及供电不足等常见问题的方法。
2150 1
点心云-N1盒子、机顶盒、手机等设备-小白保姆式刷机教程
|
安全 Linux 开发工具
安卓实现安卓-光速虚拟机技术内幕
光速虚拟机是基于安卓系统和ARM处理器架构实现的一套虚拟化技术,在安卓系统的用户态空间无需特殊权限实现了一套完整的安卓内核和硬件抽象层,能够在安卓APP内部运行另外一个安卓系统,虚拟机内部的APP和游戏运行性能能够接近真机的运行性能和兼容性。光速虚拟机也可以认为是一种安卓系统上的库操作系统(libos)。
2326 0
安卓实现安卓-光速虚拟机技术内幕
|
Android开发 异构计算
android emulator虚拟设备分析第四篇之framebuffer
一、概述 framebuffer是啥就不用详细说了吧,需要注意的是android emulator的framebuffer貌似用处不大,因为我之前用android emulator运行x86镜像时,可能是分辨率选得太大了,/dev/graphics/fb0文件都没有产生,系统却可以正常跑,因为系统用的是DRM方式。
2199 0
|
Unix API C语言
(二):winelib用户手册1
版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/49472027 (一):Winelib介绍 1:什么是winelib Winelib是一个开发工具套件,他允许你能够在Unix中编译你的Windows应用程序。
1370 0
|
2天前
|
弹性计算 人工智能 安全
云上十五年——「弹性计算十五周年」系列客户故事(第二期)
阿里云弹性计算十五年深耕,以第九代ECS g9i实例引领算力革新。携手海尔三翼鸟、小鹏汽车、微帧科技等企业,实现性能跃升与成本优化,赋能AI、物联网、智能驾驶等前沿场景,共绘云端增长新图景。
|
8天前
|
存储 弹性计算 人工智能
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
2025年9月24日,阿里云弹性计算团队多位产品、技术专家及服务器团队技术专家共同在【2025云栖大会】现场带来了《通用计算产品发布与行业实践》的专场论坛,本论坛聚焦弹性计算多款通用算力产品发布。同时,ECS云服务器安全能力、资源售卖模式、计算AI助手等用户体验关键环节也宣布升级,让用云更简单、更智能。海尔三翼鸟云服务负责人刘建锋先生作为特邀嘉宾,莅临现场分享了关于阿里云ECS g9i推动AIoT平台的场景落地实践。
【2025云栖精华内容】 打造持续领先,全球覆盖的澎湃算力底座——通用计算产品发布与行业实践专场回顾
|
7天前
|
人工智能 自然语言处理 自动驾驶
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知
关于举办首届全国大学生“启真问智”人工智能模型&智能体大赛决赛的通知