(三):Winelib用户手册2
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的源码分析来寻找一些提示。
修改你的源码的可移植性的问题。