Difference between revisions of "Zh/Documentation/Building Guide/Building on Windows"

From Apache OpenOffice Wiki
Jump to: navigation, search
(额外需要的软件包)
(打破链接到可执行文件)
Line 154: Line 154:
 
{{Template:Documentation/Note|安装器会自动检查和下载这些安装包需要的相关安装包,整个过程需要20分钟以上.}}
 
{{Template:Documentation/Note|安装器会自动检查和下载这些安装包需要的相关安装包,整个过程需要20分钟以上.}}
  
=== 打破链接到可执行文件 ===
+
=== 使用可执行文件替换链接符号 ===
在Cygwin工具包,一些可执行文件可能是符号链接,如awk.exe gunzip.exe,tar.exe(旧版本)。 这可能会导致生成时的中断,应用链接到它们的命令的副本更换符号链接
+
在Cygwin工具包,一些可执行文件仅仅符号链接(快捷键),如awk.exe gunzip.exe,tar.exe(旧版本)。 这可能会导致生成时的中断,应该使用该链接对应的命令行的副本更换符号链接
 
作为检查,请执行:
 
作为检查,请执行:
  
 
  ls -l /bin/awk.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,通过以下命令:  
+
例如:awk,exe是一个连接,在版本1.5.24-2中awk.exe仅仅是一个链接到gawk.exe的链接,执行这个shell将显示“awk.exe->gawk.exe”,因此,必须用gawk.exe覆盖awk.exe,通过以下命令:  
  
 
  cd /bin
 
  cd /bin
Line 167: Line 167:
  
  
如果你忽略了一些东西或者你碰到新Cygwin版本里有一些符号链接从没有被提到过,这都没有多大关系. 你将会在稍后的配置步骤得到一个有用的有关链接错误告警消息,这个消息将告诉你不得不移除哪一个链接.你可以根据awk.exe/gawk.exe环节给出的建议来做.
+
如果你忽略了一些东西或者你碰到新Cygwin版本里有一些符号链接从没有被提到过,这没有多大影响. 你将会在稍后的配置步骤得到一个有用的有关链接错误告警消息,这个消息将告诉你不得不移删除一个链接.你可以根据awk.exe/gawk.exe环节给出的建议来做.
  
 
=== 在cygwin中安装额外perl 模块 ===
 
=== 在cygwin中安装额外perl 模块 ===

Revision as of 15:21, 19 February 2013

Template:Documentation/Windows

概述

Template:Documentation/Windows

为了能够建制 OpenOffice.org我们需要Cygwin这个工具 , 这是一个模拟一个完整的Unix命令环境的 Windows 程序.为了能够使用它,你需要熟悉命令行, 当然,并不需要你相当了解Unix 内核.

Template:Documentation/Tip

Template:Documentation/Note Template:Documentation/Tip

基本配置要求

硬件要求

  • 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[1]
GDI+ Redistributable (Genuine Windows Validation required) main/external/gdiplus
dbghelp.dll[2]

也可以在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)[3]
可选项: Microsoft DirectX SDK[4] --with-directx-home=


过期的Apache OpenOffice配置要求(已不适用):

从那里获得 安置
Apache OpenOffice不再需要的 仅仅适用于 OOo2.x版本 但根据bug报告 Issue 88652 3.x的配置中仍需要: unicows.dll from (Microsoft Layer for Unicode)[5] external/unicows
Apache OpenOffice不再需要的 instmsiw.exe and instmsia.exe external/msi
Apache OpenOffice不再需要的 for 2008 compiler (until DEV300 m22): msvcp90.dll and msvcr90.dll (found in $(msvcdir)\Vc\redist\x86\Microsoft.VC90.CRT) external/msvcp90
Apache OpenOffice不再需要的 在 DEV300m23下开启2008编译器: Microsoft_VC90_CRT_x86.msm and policy_9_0_Microsoft_VC90_CRT_x86.msm for non debug builds and Microsoft_VC90_DebugCRT_x86.msm and policy_9_0_Microsoft_VC90_DebugCRT_x86.msm for debug builds[6]

. 这些联合的模块可以再vs08 Express版本和VS08 Professional版本下找到. 所有的 *.msm 文件 都在此位置 c:\Program Files\Common Files\Merge Module.

main/external/msm90

添加所有的文件到建制对应目录下

Template:Documentation/Tip

{{Template:Documentation/NoteOOo使用 Mozilla的库文件. 只有通过VC2003编译器才可能成功建立资源,所以你必须使用msvx71预编译库;在Windows系统中,Mozilla通讯录才需要Mozilla库支持; 不幸的是,有一个bug揭示:因为模块的依赖关系使得凡是依赖Mozilla库建立的模块必须依赖此模块,否则会失败; xmlsecurity (见下文).}}

Template:Documentation/Note

建制工具的准备和安装

建立cygwin

你可以到这里 http://www.cygwin.com/ 下载和安装最新版本的cygwin.

Documentation caution.png 请确保保持文件类型是"Unix/binary".
Documentation caution.png 请确保cygwin shell路径中没有包含空格和引号,否则配置将不会正常工作

额外需要的软件包

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

Template:Documentation/Note

使用可执行文件替换链接符号

在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,它将会要求配置,请选择自动配置.

Documentation caution.png 请注意:CAPN不能过处理包含空格的用户名. 要解决这个事实, 当CPAN要求您指定的CPAN的构建和高速缓存目录 ,建议更改默认的目录到此 /cpan.

命令结束时,CPAN命令出现并随时准备接受命令进行安装;每一个模块使用命名 install $模块名. 一些必须被安装的模块是:

  • Archive::Zip
  • LWP::UserAgent

Apache OpenOffice不在适用:

  • XML::Parser (虽然它看来是已经安装了,这样做也不会有影响)
  • URI
  • Crypt::SSLeay
  • SOAP::Lite

CPAN将会侦测选择的模块是否依赖于其他的模块,同时也提供这些模块的下载;如上所说,请确认这些.

Template:Documentation/Note

Documentation caution.png 这有一个从CPAN错误例子:
C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same
address as parent(0x7C0000) != 0x7D0000

为了修正这问题, 退出Cygwin, 运行cmd.exe, 输入"c:\cygwin\bin\ash.exe" 启动ash.exe, 然后输入 /bin/rebaseall. CPAN将重新运行.

Documentation caution.png 一个发生在cygwin在make install时的错误例子 :
ERROR: Can't create '/usr/bin'; Do not have write permissions on '/usr/bin'

其实我可以写入到/usr/bin; 但是当我执行 ls -ld /usr/bin, cygwin提示不具有写入权限; 并且chmod u+w /usr/bin 提示 Permission denied(权限被拒绝). 这将导致因为权限拒绝而安装过程失败. 作为一个组合,我安装了vim 编辑了 / usr/lib/perl5/5.10/ExtUtils/Install.pm的368行,更换此:

return -w $dir;

替换为:

return 1;

这意味着允许安装进行.

全部建制

Documentation caution.png 请使用一个短的绝对路径来存储OpenOffice.org资源,例如 C:\ooo.否则,在后续的模块建制过程中将会因为某些建制动作命令行长度过长而出现奇怪的问题:
 1 [main] perl 1972 C:\cygwin\bin\perl.exe: *** fatal error - fork: can't reserve memory for stack 0x83C840 - 0x840000, 
Win32 error 487
 

配置

配置工具用于创建环境. 它将检测所有的软硬件信息和系统设备是否满足建制要求, 创建配置文件通过调用: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 \

配置设定提示

Documentation caution.png 确保Cygwin的shell的PATH变量中不包含任何空格和引号
Documentation caution.png 路径含有空格将会导致问题. 安装要求路径不能含有空格,另外,各种安装包使用默认的路径中包含空格,然后使用的混合短的路径的配置。 混合短路径可以使用Cygwin的cygpath的工具得到, eg:
$ cygpath -m -s "c:\Program Files\Microsoft Visual Studio 9.0\VC"
 c:/PROGRA~1/MICROS~1.0/VC

with-psdk-home设置需要区分大小写的路径名。 在任何情况下,我建议使用区分大小写的用法 - 如果你要使用Cygwin,区分大小写这是很好的习惯.

Documentation caution.png 注意使用/c/ 而不是 /cygdrive/c/.
Documentation caution.png 在配置参数中主意避免斜划线,在--with--psdk--home过程中斜划线将会导致问题.

Template:Documentation/Note Template:Documentation/Tip Template:Documentation/Tip {{Template:Documentation/Caution|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. Template:Documentation/Tip. Template:Documentation/Tip Template:Documentation/Tip Template:Documentation/Tip Template:Documentation/Tip

引导

在运行configure之后,你必须为创建OpenOffice.org而创建一个dmake make实用程序。 通过这从SRC_ROOT(根目录)目录下调用

./bootstrap

Template:Documentation/Note

设定环境

当配置脚本成功运行后,winenv.set.sn文件将会生成;请执行:[7]. 请执行:

source winenv.Set.sh

来设定建制的环境.

开始建制

请在根目录下输入以下来建制$SRC_ROOT[8]:

dmake

建制过程至少需要一个小时(3GHz,4核,8G内存).

OOo在建制其模块过程中有很多特别的东西,每个模块在它第一次建制过程中都有一个“输出”文件夹(输出生成的一些子文件夹)生成.通过MSVC++2003建制的文件夹名字是“wntmsci10.pro”,在MSVC++2005和MSVC++2008建制下该文件夹名字是“wntmsci12.pro”.成功建制一个模块之后一些生成的文件通过执行一个名为“deliver”的工具(自动在建制每一个模块中执行)复制到一个命名为“solver”模块输出文件夹中.其他的模块将使用这些“deloverd”文件(头文件,库...)来解决他们之间的依赖;solver模块的内容页将被用来包装最后的安装步骤.

Template:Documentation/Tip


部分建制

有两种部分建制的方法:

  • 兼容的
  • 不兼容的

如果你清楚你正在干什么那么可以选择兼容模式; Template:Documentation/Note

模块重建(不兼容建制)

如果你决定用不兼容的模式建制一个模块,你需要重建所有依赖于此模块的模块(直接或间接);

cd $SRC_ROOT/instsetoo_native
build --from $INCOMPATIPLEMODULE --prepare
build --from $INCOMPATIBLEMODULE

模块重建(兼容建制)

重建一个模块时,你需要直接删除掉所有的输出文件,并且重新建制和传递到solver,通过以下命令:

cd $MODULE
build --from $MODULE --prepare
build && deliver

根目录下instsetoo_native中的简单建制将会重新创建安装步骤,先确保其他的所有模块已经建制完成.[9]

建制一个带有debug信息的模块

建制一个带有debug信息和额外断言和检测的模块,请运行:

cd $MODULE
build --from $MODULE --prepare # removes old output trees and solver
build debug=true --from $MODULE

把新创建的二进制文件替换到现有的安装文件。 这些与建立一个安装并不起任何作用;因为默认情况二进制文件被剥夺.

Template:Documentation/Tip

查找安装设置

成功建制后你将在以下位置找到OOo的安装

instsetoo_native/wntmscixx.pro/OpenOffice/msi/Install/en-US

instsetoo_native是一个安装设置的模块.

Template:Documentation/Tip

技巧和窍门

高速缓存

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的信息文件不会创建-构建也完成得更快.

Documentation caution.png 但是仅仅在纯建制时,设置其为使能;一旦你建制了OOo并且已经修改过,出于安全考虑请重置变量.

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);

参考

Template:Documentation/Note


  1. Template:Documentation/Note
  2. Template:Documentation/Note
  3. Template:Documentation/Note
    Documentation caution.png 如果是NSIS,一个自包含的Windows安装程序被创建在MSI安装程序文件。过去的情况是新版本的NSIS会造成建制中断,但是现在看来NSIS升级到2.3.7也可工作;.
  4. Template:Documentation/Note
    Documentation caution.png 目前(2008/01)的DirectX9 SDK和Windows平台SDK的版本不互相兼容。为了能够在DirextX启用下建制,你需要修补Platform SDK中的一个文件,有关详细信息,请参见[1].
    Documentation caution.png 不要使用DirectX10的SDK!
  5. Template:Documentation/Note
  6. Template:Documentation/Note
  7. Template:Documentation/Note
  8. Template:Documentation/Note
  9. Documentation caution.png build --all 将重建 更改的文件。 但是,它不检查不兼容的模块。 如果不确定,请使用build --from --prepare.
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools