Windows环境下的建制
概述
为了能够建制 OpenOffice.org我们需要Cygwin这个工具 , 这是一个模拟一个完整的Unix命令环境的 Windows 程序.为了能够使用它,你需要熟悉命令行, 当然,并不需要你相当了解Unix 内核.
如果你从未使用过Unix shell命令, 你可以访问这个网页 TLDP内核介绍. |
基本配置要求
硬件要求
- 1 个或者多个CPU(速度当然会更快) (推荐x-系类CPU )
- 1 GB 内存 (推荐2 GB )
- 10 GB 可存储空间 (debug时需要20 GB )
软件要求
- Windows XP/Vista/7
表格里面的项目是建制必须的一些准备,这些项目解释如下. 表格里面的文件列表列出了中、需要下载的(附有下载链接)文件,这些文件必须放在相应的资源根目录下:
从哪里获取这些文件 | 放置/使用配置 |
---|---|
Cygwin: Cygwin 工具 (dll版本 1.5.10)或者更高版本 | (默认) |
C/C++ 编译器: C++ 2008 标准版 编译器 (基本安装, 没有可选要求) 专业版: Visual C++ 2008 Professional | --with-cl-home= |
Java: JDK 1.6 DEV300 版本 >= m37 适用于 OOo310 系列版本 (旧版本的java 在 hsqldb 模块下将会失败) | --with-jdk-home= |
Windows SDK for Windows Server 2008⧼cite_reference_link⧽ | |
GDI+ Redistributable (Genuine Windows Validation required) | main/external/gdiplus |
dbghelp.dll⧼cite_reference_link⧽
也可以在Visual Studio C++ 2008Express安装文件中找到. |
main/external/dbghelp |
Apache Ant ( 1.6.5版本或者更高版本) | --with-ant-home= |
Mozilla binary distribution (WNTMSCIruntime.zip,WNTMSCIlib.zip,WNTMSCIinc.zip)
为了预建制模块moz(组件)目前使用的组件版本是1.1.4,不支持 Visual Studio C++ 2008编译器. |
main/moz/zipped |
msvcr71.dll 和 msvcp71.dll动态链接库,这两个dll在 Mozilla libraries 起作用(到PC上或者网络上搜寻这两个文件.这两个文件都是小写名,有时下载的这两个文件是大写名,这会导致建制时搜寻不到这两个文件)) | main/external/msvcp71 |
msvcp80.dll 和 msvcr80.dll 这两个dll在 Mozilla libraries 中起作用;(我们可以再以下位置找到他们c:\WINDOWS/WinSxS/x86_Microsoft.VC80.CRT_1fc8b3b9a1e18e3b_8.0.50727.42_x-ww_0de06acd/msvc) | main/external/msvcp80 |
可选项: Nullsoft Scriptable Install System (NSIS)⧼cite_reference_link⧽ | |
可选项: Microsoft DirectX SDK⧼cite_reference_link⧽ | --with-directx-home= |
过期的Apache OpenOffice配置要求(已不适用):
从那里获得 | 安置 |
---|---|
Apache OpenOffice不再需要的 |
|
Apache OpenOffice不再需要的 |
|
Apache OpenOffice不再需要的 |
|
Apache OpenOffice不再需要的
|
添加所有的文件到建制对应目录下
{{Documentation/NoteOOo使用 Mozilla的库文件. 只有通过VC2003编译器才可能成功建立资源,所以你必须使用msvx71预编译库;在Windows系统中,Mozilla通讯录才需要Mozilla库支持; 不幸的是,有一个bug揭示:因为模块的依赖关系使得凡是依赖Mozilla库建立的模块必须依赖此模块,否则会失败; xmlsecurity (见下文).}}
默认提供的cygwin版本 http://www.cygwin.com/ 目前版本是1.7.x. 当前的进度中,我们建议您使用这个版本,因为它修复了.dll重映射的问题(见下文),而且可以运行在Windows 7上.如果你需要建立旧版本的资源,检查这里 http://www.cygwin.com/win-9x.html |
建制工具的准备和安装
建立cygwin
你可以到这里 http://www.cygwin.com/ 下载和安装最新版本的cygwin.
额外需要的软件包
Cygwin由一系列基础的和可选的安装包组成. 在建立OOo时,你需要在安装器中选择一些可选的安装包,这些需要的安装包如下:
- Category Archive:
- unzip
- zip
- Category Devel :
- autoconf
- bison
- flex
- gcc-g++
- gperf
- make
- openssl-devel (仅在用 perl modules 建立 CWS工具时有效 , 见下文)
- mercurial (需要 cvs 2.x-3.0, 或者3.1版本 )
- readline
- Category Libs
- openssl
- Category Net
- openssh
- Category Perl
- perl
- Category Shells
- mintty
- Category Utils
- patch
- gnupg
- Category Web
- wget
使用可执行文件替换链接符号
在Cygwin工具包,一些可执行文件仅仅符号链接(快捷键),如awk.exe gunzip.exe,tar.exe(旧版本)。 这可能会导致生成时的中断,应该使用该链接对应的命令行的副本更换符号链接 作为检查,请执行:
ls -l /bin/awk.exe
例如:awk,exe是一个连接,在版本1.5.24-2中awk.exe仅仅是一个链接到gawk.exe的链接,执行这个shell将显示“awk.exe->gawk.exe”,因此,必须用gawk.exe覆盖awk.exe,通过以下命令:
cd /bin rm awk.exe cp gawk.exe awk.exe
如果你忽略了一些东西或者你碰到新Cygwin版本里有一些符号链接从没有被提到过,这没有多大影响. 你将会在稍后的配置步骤得到一个有用的有关链接错误告警消息,这个消息将告诉你不得不移删除一个链接.你可以根据awk.exe/gawk.exe环节给出的建议来做.
在cygwin中安装额外perl模块
如上所说,一些perl 模块必须用CPAN来安装.使用shell命令来完成必要的安装:
perl -MCPAN -e shell
如果这个命令第一次执行CPAN,它将会要求您配置,请选择自动配置.
命令结束时,CPAN命令出现并随时准备接受命令进行安装;每一个模块使用命名 install $模块名
. 一些必须被安装的模块是:
- Archive::Zip
- LWP::UserAgent
Apache OpenOffice不在适用:
- XML::Parser (虽然它看来是已经安装了,这样做也不会有影响)
- URI
- Crypt::SSLeay
- SOAP::Lite
CPAN将会侦测这些选择的模块是否依赖于其他的模块,同时也提供这些模块的下载;如上所说,请确认这些.
最后的三个模块仅仅在你需要适用cws工具时才需要. 这些工具在你创建和维护你自己的子工作空间步骤中起作用,Child Workspaces 或者你想要建立其中一个时这也是必须要的安装的. 建议你安装这些,因为你迟早都要工作在子工作空间. |
全部建制
配置
配置工具用于创建环境. 它将检测所有的软硬件信息和系统设备是否满足建制要求, 创建配置文件通过调用:winenv.set(tcsh)和winenv.set.sh(bash)这两个文件来设置建制需要的环境变量.在运行配置之前,请确保所需的所有程序都在系统路径或通过相应的命令行启动配置.如果配置侦测到了问题,它将会停止并提供一些有用的信息帮助你修复配置.
从Mercurial库建制OOo: 你将发现配置信息脚本文件在根目录下;配置的结果文件也生成在根目录下.
从Apache的SVN存储库建设OOo:
在$SRC_ROOT
下调用autoconf
. 它将生成配置步骤.
在每次在configure.in
(无论是自己或其他任何人)更改配置步骤后和每次进行更改configure.in
脚本,该脚本会提醒你重新运行autoconf
.
autoconf
配置例子
你可以通过使用 ./configure --help来获得所有参数的简短的解释.
最精短配置(当然最基本的先决条件得满足)--路径根据不同设备而不同:
./configure --disable-build-mozilla --with-mozilla-build="/cygdrive/d/OOo/mozilla-build-1.3" \ --with-cl-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC" \ --with-mspdb-path="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/Common7/IDE" \ --with-frame-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1" \ --with-psdk-home="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1" \ --with-midl-path="/cygdrive/c/Program Files/Microsoft SDKs/Windows/v6.1/Bin" \ --with-asm-home="/cygdrive/c/Program Files/Microsoft Visual Studio 9.0/VC/Bin" \ --with-csc-path="/cygdrive/c/WINDOWS/Microsoft.NET/Framework/v3.5" \ --with-jdk-home="/cygdrive/c/j2sdk1.5.0.06" \ --with-directx-home="/cygdrive/d/OOo/DirectXSDK" \ --with-ant-home=/ant \
这里有一些高阶设定能够帮助你拜托一些先决条件准备 这并不是每一个开发者都要求的(但是要注意,这操作会从最终的建制结果中删除某些部分):
--disable-mozilla \ --disable-activex \ --disable-directx \ --disable-atl \ --without-junit \ --disable-binfilter \ --disable-odk \
以下是为了在比OOo330版本的版本或者比DEV300旧的版本中建制:
--with-use-shell=bash
一些设置请慎重考虑:
--enable-pch \ --enable-werror \ --enable-dbgutil \
如果你想要在你的磁盘中建立多个工作空间,将外部资源包文件设为共享将会是个不错的主意:
--with-external-tar=d:/OOo/ext_sources \
配置设定提示
{{Warn|If you run into problems compiling on an "Express Edition" (such as Cannot open include files: 'atlbase.h': No such files or directory), check your settings in winenv.set.sh for DISABLE_ATL
, DISABLE_ACTIVEX
: all have to be set TRUE
. Visual Studio Express compilers do not contain everything needed to 建制OOo所需的全部ActiveX控件、自动OLE和原生Windows OLE支持,所以通过--disable-atl --disable-activex 禁用他们或者增加他们通过这里:via the WDK.
因为并不是所有的开发者需要DiretX,它的SDK需要消耗大量硬盘空间,而且易于导致不兼容,所以我们建议通过--disable-directx建制一个没有DirectX支持的OOo,如上述例子中一样,否则,你必须提供DirectX支持的SDK路径,你可以使用--with-directx-home 来设置
|
OOo使用了Mozilla的一些组件。使用Visual Studio 2005编译器编译源代码来建制OOo是不可能的。通过--disable-mozilla 来完全禁用Mozilla 组件根据当前BUG报告,因为模块之间的相互依赖性,这可能会导致建制不能正常工作.
|
如果试用最新的源代码资源,错误有可能发生,因为configure.in更新了,但是配置忘记了更新;配置脚本是configure.in使用autoreconf命令中产生的;perl脚本set_soenv是从set_soenv.in运行配置产生的 |
如果你未能成功安装Cygwin,有一种方法是使用已知的在Cygwin起作用的安装包,也就是说直接从其他用户相应的目录下那里复制相应的安装包. 用户:TorLillqvist有一些安装树目录压缩存放在 http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . 如果需要帮助尽管问他. |
引导
在运行configure之后,你必须为创建OpenOffice.org而创建一个dmake make实用程序。 通过这从SRC_ROOT(根目录)目录下调用
./bootstrap
设定环境
当配置脚本成功运行后,winenv.set.sn文件将会生成;请执行:⧼cite_reference_link⧽. 请执行:
source winenv.Set.sh
来设定建制的环境.
开始建制
请在根目录下输入以下来建制$SRC_ROOT
⧼cite_reference_link⧽:
dmake
建制过程至少需要一个小时(3GHz,4核,8G内存).
OOo在建制其模块过程中有很多特别的东西,每个模块在它第一次建制过程中都有一个“输出”文件夹(输出生成的一些子文件夹)生成.通过MSVC++2003建制的文件夹名字是“wntmsci10.pro”,在MSVC++2005和MSVC++2008建制下该文件夹名字是“wntmsci12.pro”.成功建制一个模块之后一些生成的文件通过执行一个名为“deliver”的工具(自动在建制每一个模块中执行)复制到一个命名为“solver”模块输出文件夹中.其他的模块将使用这些“deloverd”文件(头文件,库...)来解决他们之间的依赖;solver模块的内容页将被用来包装最后的安装步骤.
使用一些不是最新版的cygwin(1.5.18/1.5.19)将导致建制挂起,你可以在$nnn是运行的进程号处运行ls /proc/$nnn/fd,或者运行:
ls /proc/*/fd “取消挂起”的过程详细信息,请参阅参考51560 |
部分建制
有两种部分建制的方法:
- 兼容的
- 不兼容的
如果你清楚你正在干什么那么可以选择兼容模式;
更多的信息,请看兼容模式建制 Compatible Builds. |
模块重建(不兼容建制)
如果你决定用不兼容的模式建制一个模块,你需要重建所有依赖于此模块的模块(直接或间接);
cd $SRC_ROOT/instsetoo_native build --from $INCOMPATIPLEMODULE --prepare build --from $INCOMPATIBLEMODULE
模块重建(兼容建制)
重建一个模块时,你需要直接删除掉所有的输出文件,并且重新建制和传递到solver,通过以下命令:
cd $MODULE build --from $MODULE --prepare build && deliver
根目录下instsetoo_native中的简单建制将会重新创建安装步骤,先确保其他的所有模块已经建制完成.⧼cite_reference_link⧽
建制一个带有debug信息的模块
建制一个带有debug信息和额外断言和检测的模块,请运行:
cd $MODULE build --from $MODULE --prepare # removes old output trees and solver build debug=true --from $MODULE
把新创建的二进制文件替换到现有的安装文件。 这些与建立一个安装并不起任何作用;因为默认情况二进制文件被剥夺.
更详细的内容请看 Windows Debugging. |
查找安装设置
成功建制后你将在以下位置找到OOo的安装
instsetoo_native/wntmscixx.pro/OpenOffice/msi/Install/en-US
instsetoo_native是一个安装设置的模块.
如果你已经安装一个版本的OOo,你可以在平行的安装刚刚建制的版本,通过设置安装 /a 解压缩的所有文件而不需要任何系统注册; 请参阅 Running in parallel. |
技巧和窍门
高速缓存
Windows系统从这里下载here,按照以下步骤进行 :
export CCACHE_DIR="some/place/with/space" ccache -M 2G -F 10000 export CCACHE_CPP2=TRUE export CXX="guw.pl ccache cl" # export USE_PCH= if you experience trouble with precompiled headers
依赖性
nodep
如果你将环境变量nodep设为true,那么dependendy的信息文件不会创建-构建也完成得更快.
NO_HIDS
这个是和nodep类似的变量,它阻止一些为自动测试而生成的HID文件的生成;如果你仅仅是想要建制一个OOo,那么你没必要需要这些;.
平行建制
如果你有一个多刻处理器机器或类似的,你可以运行一个并行构建。有两个级别的并行 - makefile文件(目录)的水平,另外一个在全局层面上运行的。这两个级别平行建制由OOo建制环境中两个建制步骤产生;建制脚本从所有目录中的模块的build.lst文件中读取运行脚本运行 并且dmake每一个目录; .
全局层面的平行建制
全局层面的平行建制,你必须运行建制从 $SRC_ROOT/instsetoo_native目录下使用-P<处理器数目>,例如:
build -P2
这命令告诉build过程允许同时并行执行多少个dmake进程.
目录层面的平行建制
export MAXPROCESS=<numer or processes>
这命令告诉dmake有多少个目标被允许同时并行建制;当你不使用build.pl但是建制一个单一的目录(单一的makefile),你可以使用
dmake -P2
结合两种等级平行建制
如果想结合两种等级平行建制
build -P2 -- -P2
"--" "是build.pl一个特殊的参数,传递当dmake开始后需要的下一个参数.
推荐
经验告诉我们使用多颗处理器是一个好的选择,使用多个线程并不会早场大麻烦,除了当合并的选项被选上;所以咋一个单核处理器中使用两个以上的线程将会加速建制过程;
创建预编译Mozilla浏览器
对于mozilla的组件,你可以选择要么从Mozilla的资源使用预编译的软件包构建,或者或使用系统Mozilla浏览器(安装在您的构建系统中,不是一切都可以使用,这取决于你被安装的版本)如果你愿意你可以轻松的创建一个预先包装的二进制文件的版本(或因为你无法使用官方的资源,或者编译器不匹配而无法建制或者其他技术原因或者因为你想建立的东西你没有建制),请参照:
- 从Mozilla源建立moz模块
- 运行时配置时请运行--enable-build-mozilla并把Mozilla的源代码包放到moz/download目录下
- 在moz中运行 dmake zip 创建zip文件
- 你可以在 {platform}.pro/zipped发现zips;
将它们复制到你喜欢的位置. 现在使用--disable-build-mozilla而不是使用--enable-build-mozilla ,并复制你创建或下载的zips到moz/zipped ,这些在编译时使用。这将大大降低你的建制时间(否则你将花费额外的时间用来编译mozilla);
参考
⧼cite_references_prefix⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_link_one⧽ ⧼cite_references_suffix⧽
Content on this page is licensed under the Public Documentation License (PDL). |