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

From Apache OpenOffice Wiki
Jump to: navigation, search
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Documentation/Windows|建制指导 __TOC__
+
{{Win|建制指导 __TOC__
 
|ShowNextPage=none
 
|ShowNextPage=none
 
|ShowPrevPage=none
 
|ShowPrevPage=none
Line 12: Line 12:
 
= 概述=
 
= 概述=
  
{{Template:Documentation/Windows| 这个文档解释了怎么在Windows系统下建立一个OpenOffice.org的源代码.}}
+
{{Win| 这个文档解释了怎么在Windows系统下建立一个OpenOffice.org的源代码.}}
  
 
为了能够建制 OpenOffice.org我们需要Cygwin这个工具 , 这是一个模拟一个完整的Unix命令环境的 Windows 程序.为了能够使用它,你需要熟悉命令行, 当然,并不需要你相当了解Unix 内核.
 
为了能够建制 OpenOffice.org我们需要Cygwin这个工具 , 这是一个模拟一个完整的Unix命令环境的 Windows 程序.为了能够使用它,你需要熟悉命令行, 当然,并不需要你相当了解Unix 内核.
  
{{Template:Documentation/Tip|如果你从未使用过Unix shell命令, 你可以访问这个网页 [http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/index.html TLDP内核介绍].}}
+
{{Tip|如果你从未使用过Unix shell命令, 你可以访问这个网页 [http://tldp.org/LDP/GNU-Linux-Tools-Summary/html/index.html TLDP内核介绍].}}
  
{{Template:Documentation/Note|<code>$SRC_ROOT</code> 将表示 OpenOffice.org源代码资源存储所在路径.}}
+
{{Note|<code>$SRC_ROOT</code> 将表示 OpenOffice.org源代码资源存储所在路径.}}
{{Template:Documentation/Tip|当您建制时建议您检测发布说明来获得与以前发布的版本的一些改变.}}
+
{{Tip|当您建制时建议您检测发布说明来获得与以前发布的版本的一些改变.}}
  
 
= 基本配置要求=
 
= 基本配置要求=
 
==硬件要求==
 
==硬件要求==
  
* 1 个或者多个CPU(速度当然会更快) (推荐x-系类CPU )* 1 GB 内存 (推荐2 GB )* 10 GB 可存储空间 (debug时需要20 GB )
+
* 1 个或者多个CPU(速度当然会更快) (推荐x-系类CPU )
 +
* 1 GB 内存 (推荐2 GB )
 +
* 10 GB 可存储空间 (debug时需要20 GB )
  
 
== 软件要求 ==
 
== 软件要求 ==
 
* Windows XP/Vista/7
 
* Windows XP/Vista/7
  
通过下面的表格, 当你使用其中的链接时,你可以轻松的返回. 这些项目解释如下. 表格里面的文件列表列出了中、需要下载的(附有下载链接)文件,这些文件必须放在相应的资源根目录下:
+
表格里面的项目是建制必须的一些准备,这些项目解释如下. 表格里面的文件列表列出了中、需要下载的(附有下载链接)文件,这些文件必须放在相应的资源根目录下:
  
  
 
{| class="prettytable" border="1" width="100%"
 
{| class="prettytable" border="1" width="100%"
 
|-
 
|-
!从那里获取这些文件
+
!从哪里获取这些文件
 
! 放置/使用配置
 
! 放置/使用配置
 
|-
 
|-
Line 40: Line 42:
 
| (默认)
 
| (默认)
 
|-
 
|-
| C/C++ 编译器: 免费: [http://www.microsoft.com/express/download/Visual C++ 2008 标准版 编译器 (基本安装, 没有可选要求)] 专业版: Visual C++ 2008 Professional
+
| C/C++ 编译器: [http://www.microsoft.com/express/download/Visual C++ 2008 标准版 编译器 (基本安装, 没有可选要求)] 专业版: Visual C++ 2008 Professional
 
| --with-cl-home=
 
| --with-cl-home=
 
|-
 
|-
Line 46: Line 48:
 
| --with-jdk-home=
 
| --with-jdk-home=
 
|-
 
|-
| [http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en Windows SDK for Windows Server 2008]<ref name="Foot1">{{Template:Documentation/Note|Vista系统上也支持;这是一个DVD的图像或网络安装程序,使用合适的工具,您可以安装DVD、将它刻录DVD或使用的工具如WinRAR直接从ISO文件中提取文件;
+
| [http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en Windows SDK for Windows Server 2008]<ref name="Foot1">{{Note|Vista系统上也支持;这是一个DVD的图像或网络安装程序,使用合适的工具,您可以安装DVD、将它刻录DVD或使用的工具如WinRAR直接从ISO文件中提取文件;
 
您不需要安装样品或文档(可以节省大量的磁盘空间)它也将安装NET Framework 3.5 SDK。最好将Windows SDK安装到默认的目录并且路径中没有大写字。例如我使用:D:\Dev\Win_SDK\,在Python模块中收到了一些链接错误信息;
 
您不需要安装样品或文档(可以节省大量的磁盘空间)它也将安装NET Framework 3.5 SDK。最好将Windows SDK安装到默认的目录并且路径中没有大写字。例如我使用:D:\Dev\Win_SDK\,在Python模块中收到了一些链接错误信息;
 
(see {{Bug|88568}}).}}</ref>
 
(see {{Bug|88568}}).}}</ref>
Line 54: Line 56:
 
| main/external/gdiplus
 
| main/external/gdiplus
 
|-
 
|-
| [http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=CD1FC4B2-0885-47F4-AF45-7FD5E14DB6C0 dbghelp.dll]<ref name="Foot3">{{Template:Documentation/Note|DBGHELP.DLL可以从微软的网站获取,需要被保存到$SRC_ROOT/external/dbghelp目录下;微软似乎很喜欢改变这个文件的确切位置。 您可能需要在微软的网站中搜索.}}</ref>
+
| [http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=CD1FC4B2-0885-47F4-AF45-7FD5E14DB6C0 dbghelp.dll]<ref name="Foot3">{{Note|DBGHELP.DLL可以从微软的网站获取,需要被保存到$SRC_ROOT/external/dbghelp目录下;微软似乎很喜欢改变这个文件的确切位置。 您可能需要在微软的网站中搜索.}}</ref>
  
 
也可以在Visual Studio C++ 2008Express安装文件中找到.
 
也可以在Visual Studio C++ 2008Express安装文件中找到.
Line 73: Line 75:
 
| main/external/msvcp80
 
| main/external/msvcp80
 
|-
 
|-
| 可选项: [http://nsis.sourceforge.net/ Nullsoft Scriptable Install System (NSIS)]<ref name="Foot5">{{Template:Documentation/Note|If NSIS is available, a self contained Windows installer is created in addition to the MSI installer files.}}
+
| 可选项: [http://nsis.sourceforge.net/ Nullsoft Scriptable Install System (NSIS)]<ref name="Foot5">{{Note|If NSIS is available, a self contained Windows installer is created in addition to the MSI installer files.}}
{{Template:Documentation/Caution|如果是NSIS,一个自包含的Windows安装程序被创建在MSI安装程序文件。过去的情况是新版本的NSIS会造成建制中断,但是现在看来NSIS升级到2.3.7也可工作;.}}</ref>
+
{{Warn|如果是NSIS,一个自包含的Windows安装程序被创建在MSI安装程序文件。过去的情况是新版本的NSIS会造成建制中断,但是现在看来NSIS升级到2.3.7也可工作;.}}</ref>
  
 
|
 
|
 
|-
 
|-
| 可选项: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 Microsoft DirectX SDK]<ref name="Foot6"> {{Template:Documentation/Note|如果你不想下载它,你可以禁用DirectX的支持,在配置步骤使用--disable-directx .}}
+
| 可选项: [http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=6812 Microsoft DirectX SDK]<ref name="Foot6"> {{Note|如果你不想下载它,你可以禁用DirectX的支持,在配置步骤使用--disable-directx .}}
{{Template:Documentation/Caution|目前(2008/01)的DirectX9 SDK和Windows平台SDK的版本不互相兼容。为了能够在DirextX启用下建制,你需要修补Platform SDK中的一个文件,有关详细信息,请参见[http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID2743771].}}
+
{{Warn|目前(2008/01)的DirectX9 SDK和Windows平台SDK的版本不互相兼容。为了能够在DirextX启用下建制,你需要修补Platform SDK中的一个文件,有关详细信息,请参见[http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID2743771].}}
  
{{Template:Documentation/Caution|不要使用DirectX10的SDK!}}</ref>
+
{{Warn|不要使用DirectX10的SDK!}}</ref>
 
| --with-directx-home=
 
| --with-directx-home=
 
|}
 
|}
Line 92: Line 94:
 
! 安置
 
! 安置
 
|-
 
|-
|Apache OpenOffice不在需要的 <s>仅仅适用于 OOo2.x版本 但根据bug报告 {{Bug|88652}}  3.x的配置中仍需要: [http://download.microsoft.com/download/b/7/5/b75eace3-00e2-4aa0-9a6f-0b6882c71642/unicows.exe unicows.dll from (Microsoft Layer for Unicode)]<ref name="Foot2"> {{Template:Documentation/Note|unicows.dll可以从微软的网站获取,需要被保存到$ SRC_ROOT /external/ unicows目录下。微软似乎很喜欢改变这个文件的确切位置。 您可能需要在微软的网站中搜索.}}</ref></s>
+
|Apache OpenOffice不再需要的 <s>仅仅适用于 OOo2.x版本 但根据bug报告 {{Bug|88652}}  3.x的配置中仍需要: [http://download.microsoft.com/download/b/7/5/b75eace3-00e2-4aa0-9a6f-0b6882c71642/unicows.exe unicows.dll from (Microsoft Layer for Unicode)]<ref name="Foot2"> {{Note|unicows.dll可以从微软的网站获取,需要被保存到$ SRC_ROOT /external/ unicows目录下。微软似乎很喜欢改变这个文件的确切位置。 您可能需要在微软的网站中搜索.}}</ref></s>
 
| <s>external/unicows</s>
 
| <s>external/unicows</s>
 
|-
 
|-
Line 98: Line 100:
 
| <s>external/msi</s>
 
| <s>external/msi</s>
 
|-
 
|-
| not needed anymore for Apache OpenOffice <s>for 2008 compiler (until DEV300 m22): msvcp90.dll and msvcr90.dll (found in $(msvcdir)\Vc\redist\x86\Microsoft.VC90.CRT)</s>  
+
| Apache OpenOffice不再需要的  <s>for 2008 compiler (until DEV300 m22): msvcp90.dll and msvcr90.dll (found in $(msvcdir)\Vc\redist\x86\Microsoft.VC90.CRT)</s>  
 
| <s>external/msvcp90</s>
 
| <s>external/msvcp90</s>
 
|-
 
|-
|  Apache OpenOffice不再需要的 <s> 在 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<ref name="Foot4"> {{Template:Documentation/Note|你可以在这个目录下找到 c:\program files\common files\merge modules}}</ref>
+
|  Apache OpenOffice不再需要的 <s> 在 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<ref name="Foot4"> {{Note|你可以在这个目录下找到 c:\program files\common files\merge modules}}</ref>
 
. 这些联合的模块可以再vs08 Express版本和VS08 Professional版本下找到. 所有的 *.msm 文件 都在此位置 c:\Program Files\Common Files\Merge Module. </s>
 
. 这些联合的模块可以再vs08 Express版本和VS08 Professional版本下找到. 所有的 *.msm 文件 都在此位置 c:\Program Files\Common Files\Merge Module. </s>
 
| <s>main/external/msm90</s>
 
| <s>main/external/msm90</s>
 
|}
 
|}
  
=== 添加所有的文件到建制树 ===
+
=== 添加所有的文件到建制对应目录下 ===
  
{{Template:Documentation/Tip|一些文件可在一个相匹配的OOo的安装文件中找到,这样你可以不必去下载从你的安装文件中找到它,而节省一点不必要的工作.}}
+
{{Tip|一些文件可在一个相匹配的OOo的安装文件中找到,这样你可以不必去下载,从你的安装文件中找到它即可,而节省一点不必要的工作.}}
  
{{Template:Documentation/NoteOOo使用  Mozilla的库文件. 只有通过VC2003编译器才可能成功建立资源,所以你必须使用msvx71预编译库;在Windows系统中,Mozilla通讯录才需要Mozilla库支持; 不幸的是,有一个bug揭示:因为模块的依赖关系使得凡是依赖Mozilla库建立的模块必须依赖此模块,否则会失败; <tt>xmlsecurity</tt>  (见下文).}}
+
{{Documentation/NoteOOo使用  Mozilla的库文件. 只有通过VC2003编译器才可能成功建立资源,所以你必须使用msvx71预编译库;在Windows系统中,Mozilla通讯录才需要Mozilla库支持; 不幸的是,有一个bug揭示:因为模块的依赖关系使得凡是依赖Mozilla库建立的模块必须依赖此模块,否则会失败; <tt>xmlsecurity</tt>  (见下文).}}
  
{{Template:Documentation/Note|默认提供的cygwin版本 http://www.cygwin.com/ 目前是1.7.x. 当前的进度中,我们建议您使用这个版本,因为它修复了.dll重映射的问题(见下文),而且可以运行在Windows 7上.如果你需要建立旧版本的资源,检查这里 http://www.cygwin.com/win-9x.html}}
+
{{Note|默认提供的cygwin版本 http://www.cygwin.com/ 目前版本是1.7.x. 当前的进度中,我们建议您使用这个版本,因为它修复了.dll重映射的问题(见下文),而且可以运行在Windows 7上.如果你需要建立旧版本的资源,检查这里 http://www.cygwin.com/win-9x.html}}
  
 
= 建制工具的准备和安装 =
 
= 建制工具的准备和安装 =
Line 118: Line 120:
  
 
你可以到这里 http://www.cygwin.com/ 下载和安装最新版本的cygwin.
 
你可以到这里 http://www.cygwin.com/ 下载和安装最新版本的cygwin.
{{Template:Documentation/Caution|请确保保持文件类型是"Unix/binary".}}
+
{{Warn|请确保保持文件类型是"Unix/binary".}}
{{Template:Documentation/Caution|请确保cygwin shell路径中没有包含空格和引号,否则配置将不会正常工作}}
+
{{Warn|请确保cygwin shell路径中没有包含空格和引号,否则配置将不会正常工作}}
  
 
=== 额外需要的软件包 ===
 
=== 额外需要的软件包 ===
Cygwin由一系列基础的和可选的安装包组成. 在建立OOo时,你需要在安装器重选择一些可选的安装包,这些需要的安装包如下:
+
Cygwin由一系列基础的和可选的安装包组成. 在建立OOo时,你需要在安装器中选择一些可选的安装包,这些需要的安装包如下:
 
* Category Archive:
 
* Category Archive:
 
** unzip
 
** unzip
Line 134: Line 136:
 
** make
 
** make
 
** openssl-devel (仅在用 perl modules 建立 CWS工具时有效 , 见下文)
 
** openssl-devel (仅在用 perl modules 建立 CWS工具时有效 , 见下文)
** mercurial (需要 cvs  2.x-3.0, 或者3.1 )
+
** mercurial (需要 cvs  2.x-3.0, 或者3.1版本 )
 
** readline
 
** readline
 
* Category Libs
 
* Category Libs
Line 150: Line 152:
 
** wget
 
** wget
  
{{Template:Documentation/Note|安装器会自动检查和下载这些安装包需要的相关安装包,整个过程需要20分钟以上.}}
+
{{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 165: Line 167:
  
  
如果你忽略了一些东西或者你碰到新Cygwin版本里有一些符号链接从没有被提到过,这都没有多大关系. 你将会在稍后的配置步骤得到一个有用的有关链接错误告警消息,这个消息将告诉你不得不移除哪一个链接.你可以根据awk.exe/gawk.exe环节给出的建议来做.
+
如果你忽略了一些东西或者你碰到新Cygwin版本里有一些符号链接从没有被提到过,这没有多大影响. 你将会在稍后的配置步骤得到一个有用的有关链接错误告警消息,这个消息将告诉你不得不移删除一个链接.你可以根据awk.exe/gawk.exe环节给出的建议来做.
  
=== 在cygwin中安装额外perl 模块 ===
+
=== 在cygwin中安装额外perl模块 ===
 
如上所说,一些perl 模块必须用CPAN来安装.使用shell命令来完成必要的安装:
 
如上所说,一些perl 模块必须用CPAN来安装.使用shell命令来完成必要的安装:
  
 
  perl -MCPAN -e shell
 
  perl -MCPAN -e shell
  
如果这个命令第一次执行CPAN,它将会要求配置,请选择自动配置.  
+
如果这个命令第一次执行CPAN,它将会要求您配置,请选择自动配置.  
  
{{Template:Documentation/Caution|请注意:CAPN不能过处理包含空格的用户名. 要解决这个事实, 当CPAN要求您指定的CPAN的构建和高速缓存目录 ,建议更改默认的目录到此 <tt>/cpan</tt>.}}
+
{{Warn|请注意:CAPN不能过处理包含空格的用户名. 要解决这个问题, 当CPAN要求您指定的CPAN的构建和高速缓存目录时,建议更改默认的目录到此 <tt>/cpan</tt>.}}
  
 
命令结束时,CPAN命令出现并随时准备接受命令进行安装;每一个模块使用命名 <code>install $模块名</code>. 一些必须被安装的模块是:
 
命令结束时,CPAN命令出现并随时准备接受命令进行安装;每一个模块使用命名 <code>install $模块名</code>. 一些必须被安装的模块是:
Line 189: Line 191:
 
</s>
 
</s>
  
CPAN将会侦测选择的模块是否依赖于其他的模块,同时也提供这些模块的下载;如上所说,请确认这些.
+
CPAN将会侦测这些选择的模块是否依赖于其他的模块,同时也提供这些模块的下载;如上所说,请确认这些.
  
{{Template:Documentation/Note|最后的三个模块仅仅在你需要适用cws工具时才需要. 这些工具在你创建和维护你自己的子工作空间[http://wiki.services.openoffice.org/wiki/CWS Child Workspaces] 或者你想要建立其中一个时是必须要的. 建议你安装这些,因为你迟早都要工作在子工作空间.}}
+
{{Note|最后的三个模块仅仅在你需要适用cws工具时才需要. 这些工具在你创建和维护你自己的子工作空间步骤中起作用,[http://wiki.services.openoffice.org/wiki/CWS Child Workspaces] 或者你想要建立其中一个时这也是必须要的安装的. 建议你安装这些,因为你迟早都要工作在子工作空间.}}
  
{{Template:Documentation/Caution|这有一个从CPAN错误例子:
+
{{Warn|这有一个从CPAN错误例子:
 
<pre>C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same
 
<pre>C:\cygwin\bin\perl.exe: *** unable to remap C:\cygwin\bin\cygiconv-2.dll to same
 
address as parent(0x7C0000) != 0x7D0000</pre>
 
address as parent(0x7C0000) != 0x7D0000</pre>
 
为了修正这问题, 退出Cygwin, 运行cmd.exe, 输入"c:\cygwin\bin\ash.exe" 启动ash.exe, 然后输入 <code>/bin/rebaseall</code>. CPAN将重新运行.}}
 
为了修正这问题, 退出Cygwin, 运行cmd.exe, 输入"c:\cygwin\bin\ash.exe" 启动ash.exe, 然后输入 <code>/bin/rebaseall</code>. CPAN将重新运行.}}
  
{{Template:Documentation/Caution|一个发生在cygwin在<tt>make install</tt>时的错误例子 :
+
{{Warn|另一个发生在当使用cygwin运行<tt>make install</tt>时的错误例子 :
 
<pre>ERROR: Can't create '/usr/bin'; Do not have write permissions on '/usr/bin'</pre>
 
<pre>ERROR: Can't create '/usr/bin'; Do not have write permissions on '/usr/bin'</pre>
其实我可以写入到/usr/bin; 但是当我执行 <tt>ls -ld /usr/bin</tt>, cygwin提示不具有写入权限; 并且<tt>chmod u+w /usr/bin</tt> 提示 <tt>Permission denied</tt>(权限被拒绝). 这将导致因为权限拒绝而安装过程失败. 作为一个组合,我安装了vim 编辑了 / usr/lib/perl5/5.10/ExtUtils/Install.pm的368行,更换此:
+
其实我可以写入到/usr/bin; 但是当我执行 <tt>ls -ld /usr/bin</tt>, cygwin提示不具有写入权限; 并且<tt>chmod(文件访问模式) u+w /usr/bin</tt> 提示 <tt>Permission denied</tt>(权限被拒绝). 这将导致因为权限拒绝而导致安装过程失败. 作为一个组合,我安装了vim,并且编辑了 / usr/lib/perl5/5.10/ExtUtils/Install.pm的368行,更换:
 
<pre>return -w $dir;</pre>
 
<pre>return -w $dir;</pre>
 
替换为:
 
替换为:
 
<pre>return 1;</pre>
 
<pre>return 1;</pre>
这意味着允许安装进行.}}
+
该命令意思是允许安装进行.}}
  
 
=全部建制 =
 
=全部建制 =
  
{{Template:Documentation/Caution| 请使用一个短的绝对路径来存储OpenOffice.org资源,例如 <tt>C:\ooo</tt>.否则,在后续的模块建制过程中将会因为某些建制动作命令行长度过长而出现奇怪的问题: <pre> 1 [main] perl 1972 C:\cygwin\bin\perl.exe: *** fatal error - fork: can't reserve memory for stack 0x83C840 - 0x840000,  
+
{{Warn| 请使用一个短的绝对路径来存储OpenOffice.org资源,例如 <tt>C:\ooo</tt>.否则,在后续的模块建制过程中将会因为某些建制动作命令行长度过长而出现奇怪的问题: <pre> 1 [main] perl 1972 C:\cygwin\bin\perl.exe: *** fatal error - fork: can't reserve memory for stack 0x83C840 - 0x840000,  
 
Win32 error 487
 
Win32 error 487
 
  </pre>}}
 
  </pre>}}
  
 
== 配置 ==
 
== 配置 ==
配置工具用于创建环境. 它将检测所有的软硬件信息和系统设备是否满足建制要求, 创建配置文件通过调用:winenv.set(tcsh)和winenv.set.sh(bash)文件来设置建制需要的环境变量.在运行配置之前,请确保所需的所有程序都在系统路径或通过相应的命令行启动配置.如果配置侦测到了问题将会停止并提示你有用的信息区修复配置.
+
配置工具用于创建环境.  
 +
它将检测所有的软硬件信息和系统设备是否满足建制要求, 创建配置文件通过调用:winenv.set(tcsh)和winenv.set.sh(bash)这两个文件来设置建制需要的环境变量.在运行配置之前,请确保所需的所有程序都在系统路径或通过相应的命令行启动配置.如果配置侦测到了问题,它将会停止并提供一些有用的信息帮助你修复配置.
  
 
从Mercurial库建制OOo:
 
从Mercurial库建制OOo:
Line 219: Line 222:
  
 
从Apache的SVN存储库建设OOo:
 
从Apache的SVN存储库建设OOo:
  在 <code>$SRC_ROOT</code>下调用<code>autoconf</code>. 它将生成配置步骤. 在每次在<code>configure.in</code>(无论是自己或其他任何人)更改配置步骤后和每次进行更改<code>configure.in</code>脚本,该脚本会提醒你重新运行<code>autoconf</code>.
+
  在 <code>$SRC_ROOT</code>下调用<code>autoconf</code>. 它将生成配置步骤.  
 +
在每次在<code>configure.in</code>(无论是自己或其他任何人)更改配置步骤后和每次进行更改<code>configure.in</code>脚本,该脚本会提醒你重新运行<code>autoconf</code>.
  
 
  autoconf
 
  autoconf
Line 268: Line 272:
  
 
==== 配置设定提示 ====
 
==== 配置设定提示 ====
{{Template:Documentation/Caution|确保Cygwin的shell的<code>PATH</code>变量中不包含任何空格和引号}}
+
{{Warn|确保Cygwin的shell的<code>PATH</code>变量中不包含任何空格和引号}}
{{Template:Documentation/Caution|路径含有空格将会导致问题. 安装要求路径不能含有空格,另外,各种安装包使用默认的路径中包含空格,然后使用的混合短的路径的配置。 混合短路径可以使用Cygwin的cygpath的工具得到, eg:
+
{{Warn|路径含有空格将会导致问题. 安装要求路径不能含有空格;然而,各种安装包使用的默认路径中包含空格,这些会使用混合短路径的来配置。 混合短路径可以使用Cygwin的cygpath的工具得到, eg:
 
<pre>$ cygpath -m -s "c:\Program Files\Microsoft Visual Studio 9.0\VC"
 
<pre>$ cygpath -m -s "c:\Program Files\Microsoft Visual Studio 9.0\VC"
 
  c:/PROGRA~1/MICROS~1.0/VC</pre>
 
  c:/PROGRA~1/MICROS~1.0/VC</pre>
 
<code>with-psdk-home</code>设置需要区分大小写的路径名。 在任何情况下,我建议使用区分大小写的用法 - 如果你要使用Cygwin,区分大小写这是很好的习惯.}}
 
<code>with-psdk-home</code>设置需要区分大小写的路径名。 在任何情况下,我建议使用区分大小写的用法 - 如果你要使用Cygwin,区分大小写这是很好的习惯.}}
{{Template:Documentation/Caution|注意使用<code>/c/</code> 而不是 <code>/cygdrive/c/</code>.}}
+
{{Warn|注意使用<code>/c/</code> 而不是 <code>/cygdrive/c/</code>.}}
{{Template:Documentation/Caution|在配置参数中主意避免斜划线,在<code>--with--psdk--home</code>过程中斜划线将会导致问题.}}
+
{{Warn|在配置参数中主意避免斜划线,在<code>--with--psdk--home</code>过程中斜划线将会导致问题.}}
{{Template:Documentation/Note|不同的安装所安装路径而不同,包含msvc和msdk的路径应该清楚.}}
+
{{Note|不同的安装所安装路径而不同,作为开发者包含msvc和msdk的路径您应该相当清楚.}}
{{Template:Documentation/Tip|有很多的可选配置脚本文件你可以使用,你可以使用以下命令来查看:
+
{{Tip|有很多的可选配置脚本文件你可以使用,你可以使用以下命令来查看:
 
<pre>./configure --help</pre>}}
 
<pre>./configure --help</pre>}}
{{Template:Documentation/Tip|如果你运行在DEV300上出现问题,请在<code>winenv.set.sh</code>中检查<code>WINDOWS_VISTA_PSDK</code>的设定,设定其为true This is important if <code>configure</code> fails to detect the Windows platform SDK version correctly. The detection failure results from the way how configure searches for the Vista PSDK in older releases: it will be found only if it is installed into the default location.}}  
+
{{Tip|如果你运行在DEV300上出现问题,请在<code>winenv.set.sh</code>中检查<code>WINDOWS_VISTA_PSDK</code>的设定,设定其为true, This is important if <code>configure</code> fails to detect the Windows platform SDK version correctly. The detection failure results from the way how configure searches for the Vista PSDK in older releases: it will be found only if it is installed into the default location.}}  
{{Template:Documentation/Caution|If you run into problems compiling on an "Express Edition" (such as <tt>Cannot open include files: 'atlbase.h': No such files or directory</tt>), check your settings in winenv.set.sh for <code>DISABLE_ATL</code>, <code>DISABLE_ACTIVEX</code>: all have to be set <code>TRUE</code>. Visual Studio Express compilers do not contain everything needed to 建制OOo所需的全部ActiveX控件、自动OLE和原生Windows OLE支持,所以通过--disable-atl --disable-activex 禁用他们或者增加他们通过这里:[http://stackoverflow.com/questions/6979918/compile-atl-project-with-only-windows-sdk-7-1 via the WDK].
+
{{Warn|If you run into problems compiling on an "Express Edition" (such as <tt>Cannot open include files: 'atlbase.h': No such files or directory</tt>), check your settings in winenv.set.sh for <code>DISABLE_ATL</code>, <code>DISABLE_ACTIVEX</code>: all have to be set <code>TRUE</code>. Visual Studio Express compilers do not contain everything needed to 建制OOo所需的全部ActiveX控件、自动OLE和原生Windows OLE支持,所以通过--disable-atl --disable-activex 禁用他们或者增加他们通过这里:[http://stackoverflow.com/questions/6979918/compile-atl-project-with-only-windows-sdk-7-1 via the WDK].
{{Template:Documentation/Tip.|因为并不是所有的开发者需要DiretX,它的SDK需要消耗大量硬盘空间,而且易于导致不兼容,所以我们建议通过--disable-directx建制一个没有DirectX支持的OOo,如上述例子中一样,否则,你必须提供DirectX支持的SDK路径,你可以使用<code>--with-directx-home</code>来设置}}
+
{{Tip|因为并不是所有的开发者需要DiretX,它的SDK需要消耗大量硬盘空间,而且易于导致不兼容,所以我们建议通过--disable-directx建制一个没有DirectX支持的OOo,如上述例子中一样,否则,你必须提供DirectX支持的SDK路径,你可以使用<code>--with-directx-home</code>来设置}}
{{Template:Documentation/Tip|OOo使用了Mozilla的一些组件。使用Visual Studio 2005编译器编译源代码来建制OOo是不可能的。通过<code>--disable-mozilla</code> 来完全禁用Mozilla 组件根据当前BUG报告,因为模块之间的相互依赖性,这可能会导致建制不能正常工作.}}
+
{{Tip|OOo使用了Mozilla的一些组件。使用Visual Studio 2005编译器编译源代码来建制OOo是不可能的。通过<code>--disable-mozilla</code> 来完全禁用Mozilla 组件根据当前BUG报告,因为模块之间的相互依赖性,这可能会导致建制不能正常工作.}}
{{Template:Documentation/Tip|如果试用最新的源代码资源,错误有可能发生,因为configure.in更新了,但是配置忘记了更新;配置脚本是configure.in使用autoreconf命令中产生的;perl脚本set_soenv是从set_soenv.in运行配置产生的}}
+
{{Tip|如果试用最新的源代码资源,错误有可能发生,因为configure.in更新了,但是配置忘记了更新;配置脚本是configure.in使用autoreconf命令中产生的;perl脚本set_soenv是从set_soenv.in运行配置产生的}}
{{Template:Documentation/Tip|csc.exe在 <code>c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322</code> 目录中,你可能需要 <code>--with-csc-path</code>.}}
+
{{Tip|csc.exe在 <code>c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322</code> 目录中,你可能需要 <code>--with-csc-path</code>.}}
{{Template:Documentation/Tip|如果你未能成功安装Cygwin,有一种方法是使用已知的在Cygwin起作用的安装包,也就是说直接从其他用户相应的目录下那里复制相应的安装包. [[用户:TorLillqvist]]有一些安装树目录压缩存放在 http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . 如果需要帮助尽管问他.}}
+
{{Tip|如果你未能成功安装Cygwin,有一种方法是使用已知的在Cygwin起作用的安装包,也就是说直接从其他用户相应的目录下那里复制相应的安装包. [[用户:TorLillqvist]]有一些安装树目录压缩存放在 http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . 如果需要帮助尽管问他.}}
  
 
== 引导 ==
 
== 引导 ==
Line 291: Line 295:
 
  ./bootstrap
 
  ./bootstrap
  
{{Template:Documentation/Note|1=以DEV300M77启动,外部模块资源(例如,libxm12)被从资源代码库移出。引导步骤将会在资源库边上直接创建一个"ext_sources"库,并通过http下载需要的文件在该库里.
+
{{Note|1=以DEV300M77启动,外部模块资源(例如,libxm12)被从资源代码库移出。引导步骤将会在资源库边上直接创建一个"ext_sources"库,并通过http下载需要的文件在该库里.
 
如果想要改变这些默认配置,请检测配置
 
如果想要改变这些默认配置,请检测配置
 
  --with-external-tar=<TARFILE PATH>  : 手动指定路径
 
  --with-external-tar=<TARFILE PATH>  : 手动指定路径
Line 298: Line 302:
 
== 设定环境 ==
 
== 设定环境 ==
  
当配置脚本成功运行后,winenv.set.sn文件将会生成;请执行:<ref name="Foot7">{{Template:Documentation/Note|如果你想使用tcsh而不是bash,你需要使用winenv.set来代替::
+
当配置脚本成功运行后,winenv.set.sn文件将会生成;请执行:<ref name="Foot7">{{Note|如果你想使用tcsh而不是bash,你需要使用winenv.set来代替::
 
<pre> source winenv.Set
 
<pre> source winenv.Set
 
  rehash</pre>
 
  rehash</pre>
Line 308: Line 312:
  
 
== 开始建制 ==
 
== 开始建制 ==
请在根目录下输入以下来建制<code>$SRC_ROOT</code><ref name="Foot8">{{Template:Documentation/Note|你也可以运行:
+
请在根目录下输入以下来建制<code>$SRC_ROOT</code><ref name="Foot8">{{Note|你也可以运行:
 
<pre>make</pre>
 
<pre>make</pre>
 
但是 GNU/make 仅仅会启动 dmake. 你也可以在instetoo_native模块下运行:
 
但是 GNU/make 仅仅会启动 dmake. 你也可以在instetoo_native模块下运行:
Line 320: Line 324:
 
OOo在建制其模块过程中有很多特别的东西,每个模块在它第一次建制过程中都有一个“输出”文件夹(输出生成的一些子文件夹)生成.通过MSVC++2003建制的文件夹名字是“wntmsci10.pro”,在MSVC++2005和MSVC++2008建制下该文件夹名字是“wntmsci12.pro”.成功建制一个模块之后一些生成的文件通过执行一个名为“deliver”的工具(自动在建制每一个模块中执行)复制到一个命名为“solver”模块输出文件夹中.其他的模块将使用这些“deloverd”文件(头文件,库...)来解决他们之间的依赖;solver模块的内容页将被用来包装最后的安装步骤.
 
OOo在建制其模块过程中有很多特别的东西,每个模块在它第一次建制过程中都有一个“输出”文件夹(输出生成的一些子文件夹)生成.通过MSVC++2003建制的文件夹名字是“wntmsci10.pro”,在MSVC++2005和MSVC++2008建制下该文件夹名字是“wntmsci12.pro”.成功建制一个模块之后一些生成的文件通过执行一个名为“deliver”的工具(自动在建制每一个模块中执行)复制到一个命名为“solver”模块输出文件夹中.其他的模块将使用这些“deloverd”文件(头文件,库...)来解决他们之间的依赖;solver模块的内容页将被用来包装最后的安装步骤.
  
{{Template:Documentation/Tip|使用一些不是最新版的cygwin(1.5.18/1.5.19)将导致建制挂起,你可以在$nnn是运行的进程号处运行ls /proc/$nnn/fd,或者运行:
+
{{Tip|使用一些不是最新版的cygwin(1.5.18/1.5.19)将导致建制挂起,你可以在$nnn是运行的进程号处运行ls /proc/$nnn/fd,或者运行:
 
<pre>ls /proc/*/fd</pre>
 
<pre>ls /proc/*/fd</pre>
 
“取消挂起”的过程详细信息,请参阅参考51560}}
 
“取消挂起”的过程详细信息,请参阅参考51560}}
Line 330: Line 334:
 
* 不兼容的
 
* 不兼容的
 
如果你清楚你正在干什么那么可以选择兼容模式;
 
如果你清楚你正在干什么那么可以选择兼容模式;
{{Documentation/Note|更多的信息,请看兼容模式建制 [[Compatible Builds]].}}
+
{{Note|更多的信息,请看兼容模式建制 [[Compatible Builds]].}}
  
 
== 模块重建(不兼容建制)==
 
== 模块重建(不兼容建制)==
Line 346: Line 350:
 
  build && deliver
 
  build && deliver
  
根目录下instsetoo_native中的简单建制将会重新创建安装步骤,先确保其他的所有模块已经建制完成.<ref name="Foot9">{{Documentation/Caution|<code>build --all</code> 将重建 更改的文件。 但是,它不检查不兼容的模块。 如果不确定,请使用<code>build --from --prepare</code>.}}</ref>
+
根目录下instsetoo_native中的简单建制将会重新创建安装步骤,先确保其他的所有模块已经建制完成.<ref name="Foot9">{{Warn|<code>build --all</code> 将重建 更改的文件。 但是,它不检查不兼容的模块。 如果不确定,请使用<code>build --from --prepare</code>.}}</ref>
  
 
= 建制一个带有debug信息的模块 =
 
= 建制一个带有debug信息的模块 =
Line 358: Line 362:
 
把新创建的二进制文件替换到现有的安装文件。 这些与建立一个安装并不起任何作用;因为默认情况二进制文件被剥夺.
 
把新创建的二进制文件替换到现有的安装文件。 这些与建立一个安装并不起任何作用;因为默认情况二进制文件被剥夺.
  
{{Template:Documentation/Tip|更详细的内容请看 [[Windows Debugging]].}}
+
{{Tip|更详细的内容请看 [[Windows Debugging]].}}
  
 
= 查找安装设置 =
 
= 查找安装设置 =
Line 367: Line 371:
 
instsetoo_native是一个安装设置的模块.
 
instsetoo_native是一个安装设置的模块.
  
{{Documentation/Tip|如果你已经安装一个版本的OOo,你可以在平行的安装刚刚建制的版本,通过设置安装 /a  解压缩的所有文件而不需要任何系统注册; 请参阅 [[Run_OOo_versions_parallel|Running in parallel]].}}
+
{{Tip|如果你已经安装一个版本的OOo,你可以在平行的安装刚刚建制的版本,通过设置安装 /a  解压缩的所有文件而不需要任何系统注册; 请参阅 [[Run_OOo_versions_parallel|Running in parallel]].}}
  
= Tips And Tricks =
+
= 技巧和窍门 =
== ccache ==
+
== 高速缓存 ==
 
Windows系统从这里下载[http://artax.karlin.mff.cuni.cz/~kendy/ccache/ here],按照以下步骤进行 :
 
Windows系统从这里下载[http://artax.karlin.mff.cuni.cz/~kendy/ccache/ here],按照以下步骤进行 :
  
Line 379: Line 383:
 
  # export USE_PCH=  if you experience trouble with precompiled headers
 
  # export USE_PCH=  if you experience trouble with precompiled headers
  
== dependencies ==
+
== 依赖性 ==
  
 
'''nodep'''
 
'''nodep'''
Line 385: Line 389:
 
如果你将环境变量nodep设为true,那么dependendy的信息文件不会创建-构建也完成得更快.
 
如果你将环境变量nodep设为true,那么dependendy的信息文件不会创建-构建也完成得更快.
  
{{Template:Documentation/Caution|但是仅仅在纯建制时,设置其为使能;一旦你建制了OOo并且已经修改过,出于安全考虑请重置变量.}}
+
{{Warn|但是仅仅在纯建制时,设置其为使能;一旦你建制了OOo并且已经修改过,出于安全考虑请重置变量.}}
  
 
'''NO_HIDS'''
 
'''NO_HIDS'''
Line 438: Line 442:
 
现在使用--disable-build-mozilla而不是使用--enable-build-mozilla ,并复制你创建或下载的zips到moz/zipped ,这些在编译时使用。这将大大降低你的建制时间(否则你将花费额外的时间用来编译mozilla);
 
现在使用--disable-build-mozilla而不是使用--enable-build-mozilla ,并复制你创建或下载的zips到moz/zipped ,这些在编译时使用。这将大大降低你的建制时间(否则你将花费额外的时间用来编译mozilla);
  
= See Also =
+
= 参考 =
{{Template:Documentation/Note|For more information on building OOo on Windows see:
+
{{Note|For more information on building OOo on Windows see:
 
* [[Building on Windows (older releases)]]
 
* [[Building on Windows (older releases)]]
 
* [[CPAN_install| Perl modules installation with CPAN]]
 
* [[CPAN_install| Perl modules installation with CPAN]]

Latest revision as of 10:17, 16 July 2018


概述

Documentation windows.png 这个文档解释了怎么在Windows系统下建立一个OpenOffice.org的源代码.

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

Tip.png 如果你从未使用过Unix shell命令, 你可以访问这个网页 TLDP内核介绍.


Documentation note.png $SRC_ROOT 将表示 OpenOffice.org源代码资源存储所在路径.
Tip.png 当您建制时建议您检测发布说明来获得与以前发布的版本的一些改变.


基本配置要求

硬件要求

  • 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

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

Tip.png 一些文件可在一个相匹配的OOo的安装文件中找到,这样你可以不必去下载,从你的安装文件中找到它即可,而节省一点不必要的工作.


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

Documentation note.png 默认提供的cygwin版本 http://www.cygwin.com/ 目前版本是1.7.x. 当前的进度中,我们建议您使用这个版本,因为它修复了.dll重映射的问题(见下文),而且可以运行在Windows 7上.如果你需要建立旧版本的资源,检查这里 http://www.cygwin.com/win-9x.html

建制工具的准备和安装

建立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
Documentation note.png 安装器会自动检查和下载这些安装包需要的相关安装包,整个过程需要20分钟以上.

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

在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将会侦测这些选择的模块是否依赖于其他的模块,同时也提供这些模块的下载;如上所说,请确认这些.

Documentation note.png 最后的三个模块仅仅在你需要适用cws工具时才需要. 这些工具在你创建和维护你自己的子工作空间步骤中起作用,Child Workspaces 或者你想要建立其中一个时这也是必须要的安装的. 建议你安装这些,因为你迟早都要工作在子工作空间.
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过程中斜划线将会导致问题.
Documentation note.png 不同的安装所安装路径而不同,作为开发者包含msvc和msdk的路径您应该相当清楚.
Tip.png 有很多的可选配置脚本文件你可以使用,你可以使用以下命令来查看:
./configure --help
Tip.png 如果你运行在DEV300上出现问题,请在winenv.set.sh中检查WINDOWS_VISTA_PSDK的设定,设定其为true, This is important if configure fails to detect the Windows platform SDK version correctly. The detection failure results from the way how configure searches for the Vista PSDK in older releases: it will be found only if it is installed into the default location.

{{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.

Tip.png 因为并不是所有的开发者需要DiretX,它的SDK需要消耗大量硬盘空间,而且易于导致不兼容,所以我们建议通过--disable-directx建制一个没有DirectX支持的OOo,如上述例子中一样,否则,你必须提供DirectX支持的SDK路径,你可以使用--with-directx-home来设置
Tip.png OOo使用了Mozilla的一些组件。使用Visual Studio 2005编译器编译源代码来建制OOo是不可能的。通过--disable-mozilla 来完全禁用Mozilla 组件根据当前BUG报告,因为模块之间的相互依赖性,这可能会导致建制不能正常工作.
Tip.png 如果试用最新的源代码资源,错误有可能发生,因为configure.in更新了,但是配置忘记了更新;配置脚本是configure.in使用autoreconf命令中产生的;perl脚本set_soenv是从set_soenv.in运行配置产生的
Tip.png csc.exe在 c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322 目录中,你可能需要 --with-csc-path.
Tip.png 如果你未能成功安装Cygwin,有一种方法是使用已知的在Cygwin起作用的安装包,也就是说直接从其他用户相应的目录下那里复制相应的安装包. 用户:TorLillqvist有一些安装树目录压缩存放在 http://download.go-oo.org/tstnvl/tml/tml-cygwin.zip . 如果需要帮助尽管问他.


引导

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

./bootstrap
Documentation note.png 以DEV300M77启动,外部模块资源(例如,libxm12)被从资源代码库移出。引导步骤将会在资源库边上直接创建一个"ext_sources"库,并通过http下载需要的文件在该库里.

如果想要改变这些默认配置,请检测配置

--with-external-tar=<TARFILE PATH>  : 手动指定路径
--disable-fetch-external            :  禁止从网络资源中获取外部压缩包.

设定环境

当配置脚本成功运行后,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模块的内容页将被用来包装最后的安装步骤.

Tip.png 使用一些不是最新版的cygwin(1.5.18/1.5.19)将导致建制挂起,你可以在$nnn是运行的进程号处运行ls /proc/$nnn/fd,或者运行:
ls /proc/*/fd

“取消挂起”的过程详细信息,请参阅参考51560


部分建制

有两种部分建制的方法:

  • 兼容的
  • 不兼容的

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

Documentation note.png 更多的信息,请看兼容模式建制 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中的简单建制将会重新创建安装步骤,先确保其他的所有模块已经建制完成.[9]

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

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

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

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

Tip.png 更详细的内容请看 Windows Debugging.


查找安装设置

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

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

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

Tip.png 如果你已经安装一个版本的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的信息文件不会创建-构建也完成得更快.

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

参考


  1. Documentation note.png Vista系统上也支持;这是一个DVD的图像或网络安装程序,使用合适的工具,您可以安装DVD、将它刻录DVD或使用的工具如WinRAR直接从ISO文件中提取文件;

    您不需要安装样品或文档(可以节省大量的磁盘空间)它也将安装NET Framework 3.5 SDK。最好将Windows SDK安装到默认的目录并且路径中没有大写字。例如我使用:D:\Dev\Win_SDK\,在Python模块中收到了一些链接错误信息; (see Issue 88568 ).

  2. Documentation note.png DBGHELP.DLL可以从微软的网站获取,需要被保存到$SRC_ROOT/external/dbghelp目录下;微软似乎很喜欢改变这个文件的确切位置。 您可能需要在微软的网站中搜索.
  3. Documentation note.png If NSIS is available, a self contained Windows installer is created in addition to the MSI installer files.
    Documentation caution.png 如果是NSIS,一个自包含的Windows安装程序被创建在MSI安装程序文件。过去的情况是新版本的NSIS会造成建制中断,但是现在看来NSIS升级到2.3.7也可工作;.
  4. Documentation note.png 如果你不想下载它,你可以禁用DirectX的支持,在配置步骤使用--disable-directx .
    Documentation caution.png 目前(2008/01)的DirectX9 SDK和Windows平台SDK的版本不互相兼容。为了能够在DirextX启用下建制,你需要修补Platform SDK中的一个文件,有关详细信息,请参见[1].
    Documentation caution.png 不要使用DirectX10的SDK!
  5. Documentation note.png unicows.dll可以从微软的网站获取,需要被保存到$ SRC_ROOT /external/ unicows目录下。微软似乎很喜欢改变这个文件的确切位置。 您可能需要在微软的网站中搜索.
  6. Documentation note.png 你可以在这个目录下找到 c:\program files\common files\merge modules
  7. Documentation note.png 如果你想使用tcsh而不是bash,你需要使用winenv.set来代替::
     source winenv.Set
     rehash

    如果你不使用tchs,最好删除这个文件,因为迟早它将阻碍完全建制.

  8. Documentation note.png 你也可以运行:
    make

    但是 GNU/make 仅仅会启动 dmake. 你也可以在instetoo_native模块下运行:

    build --all

    有关详细信息,请运行:

    build --help
  9. Documentation caution.png build --all 将重建 更改的文件。 但是,它不检查不兼容的模块。 如果不确定,请使用build --from --prepare.
Content on this page is licensed under the Public Documentation License (PDL).
Personal tools