很了很多网上有关在Windows下编译OpenOffice的帖子,都太老了,或是太陈旧了,没有多大用处。
下面是我总结的编译OpenOffice,分享给大家。
main/
包含了各个模块。每个模块都提供了一个或多个库。
例如:应用程序writer的源代码可以在main/sd/下面。
test/
ext_libraries/
外部模块(不属于Apache OpenOffice和Apache的模块)的主目录。
ext_sources/
包含了外部库的tar balls。为了方便和确保指定的版本可用而添加的。但是需要注意的是
Apache OpenOffice发布的源代码不包含任何外部的tar balls。
该文件夹当你配置的时候,系统会建立的。
extras/
包含本地化数据。
大多数用来构建的工具和脚本都存放在main/solenv/:下面
dmake makefiles in main/solenv/inc/
gmake makefiles in main/solenv/gbuild/
executables and perl files in main/solenv/bin/
perl modules in main/bin/modules/
库和其他模块之间共享的输出文件存放在main/solver/
/////////////////////////////////////////////////////////////////
参考网页:http://wiki.openoffice.org/wiki/Documentation/Building_Guide_AOO/Step_by_step#Windows_7
增加了一下个人安装过程中的问题解决办法,以及附上部分贴图帮助大家。
安装前奏
1. 安装cygwin
可以在http://cygwin.com下载setup.exe然后在线安装。2. Install Java
安装JDK 1.6(不要安装JDK1.7)下载地址:www.oracle.com/technetwork/java/javase/downloads/index.html
3. 安装Ant
下载地址:http://ant.apache.org/bindownload.cgi选择就近的镜像下载。
下载zip包(当前是apache-ant-1.8.4-bin.zip).
解压缩zip到目录(例如:c:\),该路径不能带有括号和空格。
例如:C:\Program Files (x86)\就不会起作用。
4.通过apt-cyg安装丢失的cygwin包
4.1 安装wget
点击在http://cygwin.com下载setup.exe,然后下一步直到在搜索框输入wget,然后修改Default为Install
4.2 安装apt-cyg
目的:为了可以从google.com下载代码
cd to /cygdrive/c/temp
或者在任何一个临时里面执行
wget http://apt-cyg.googlecode.com/svn/trunk/apt-cygchmod +x apt-cygmv apt-cyg /usr/local/bin/
4.3 使用apt-cyg安装丢失的cygwin包
apt-cyg install perl zip unzip gperf autoconf rsync gcc4-g++ bison flex patch注:这里如果你网速慢你也可以像4.1中那样手动安装。我当时就是因为网速慢,而手动安装的。
4.4 安装GNU make(非常重要)
这个是我后来添加的,因为我执行到第四步骤的时候出现了错误。需要安装GNU make。在这步我就提前写出来。
5.使用gawk.exe代替符号链接awk
rm /usr/bin/awkmv /usr/bin/gawk.exe /usr/bin/awk.exe
注意:如果rm命令失败,那么mv就不必要了。
这里的/usr/bin其实是个虚拟文件夹,实际的文件夹就是/bin。
// Begin -- Microsoft Relative
6.安装Visual Studio 2008 和 Visual Studio SP1(必须安装)
VS2008下载地址网上搜会有很多,我就不给出了。SP1下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=10986
前者是VS2008的安装包,后者是补丁包SP1.
7.安装Microsoft Windows SDK for Windows7 and .NET Frameword 3.5. SP1(微软建议)
因为VS2008已经自带了SDK,其版本为v6.0A,因此我没有额外安装该SDK。
8.下载MS Visual C++ 2008 SP1 Redistributable Package
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=26368下载:vcredist_x86.exe 和 vcrestist_x64.exe
如果你是32位版本,只要安装这个vcredist_x86.exe,
而64位最好2个都安装。
注:后面也会需要下载
9.安装DirectX SDK(可选)
地址:http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=6812下载后的文件名为:DXSDK_Jun10.exe
我就没有安装DX SDK。
10.安装NSIS installer(为了创建EXE installer)(可选)
下载地址:http://nsis.sourceforge.net因为我网速的问题,这个我也没有下载,不过最终编译成功了。
// End -- Microsoft Relative
获取源码并配置文件夹位置
1.下载源码包
地址:http://openoffice.apache.org/downloads.html我这里下载后的文件为:aoo-3.4.1-incubating-src.zip
2. 解压缩包
cd ~tar -xjf <download-location>/aoo-3.4.1-incubating-src.zipcd <uncompress-aoo-3.4.1-path>/aoo-3.4.1/main
3.记录source path
$ pwd/cygdrive/f/Build_OOo3.4.1/aoo-3.4.1/main$ SourceMain=/cygdrive/f/Build_OOo3.4.1/aoo-3.4.1/main
注1:/cygdrive/f/Build_OOo3.4.1/aoo-3.4.1/main就是F:\Build_OOo3.4.1\aoo-3.4.1\main
注2:/和\要区别前者是cygwin命令行使用的,后者是Windows磁盘路径。
注3:解压缩的aoo-3.4.1必须和cygwin放在不同的目录。(非常重要)
这是我的文件路径:
给源码添加额外的平台相关的包和DLL
1. 添加dbghelp.dll
$ cp /cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 9.0/Common7/IDE/dbghelp.dll $SourceMain/external/dbghelp
这步你也可以手动添加。
2. 将步骤一中下载的vcredist_x86.exe和vcredist_x64.exe放置到/main/external
地址:http://www.microsoft.com/en-us/download/details.aspx?id=26368这里网页上给出的地址和步骤二给出的不同。步骤二给出的是security updates的。
但是这里我使用security updates的。
3. 将gdiplus.dll放置到/main/external/gdiplus中
下载地址:http://www.microsoft.com/en-us/download/details.aspx?id=18909下载后得到WindowsXP-KB975337-x86-ENU.exe,并执行。
在生成的文件夹找到gdiplus.dll并拷贝到/main/external/gdiplus中
4. 将msvcr100.dll拷贝到/main/external/msvcp100中
网页上给出的msvcr100.dll的地址为:C:\Windows\System32\msvcr100.dll但是我的系统是64位的,最后我在C:\Windows\SysWOW64找到了msvcr100.dll
注:默认/main/external没有msvcp100文件夹,你要自己手动新建。
配置和编译
1. 回到/aoo-3.4.1/main
$ cd $SourceMain
2. 设定配置选项(这里你需要根据你本机的实际情况设置)
我本来是按照那个网页上的配置写的,却总是出错,不得已我在下面添加了Full Path../configure \--with-cl-home=/cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 9.0/VC \--with-mspdb-path=/cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 9.0/Common7/IDE \--with-asm-home=/cygdrive/c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio\ 9.0/Bin \--with-csc-path=/cygdrive/c/Windows\Microsoft.NET\Framework\v3.5 \--with-frame-home=/cygdrive/c/Program\ Files/Microsoft\ SDKs/Windows/v6.0A \--with-psdk-home=/cygdrive/c/Program\ Files/Microsoft\ SDKs/Windows/v6.0A \--with-midl-path=/cygdrive/c/Program\ Files/Microsoft\ SDKs/Windows/v6.0A/Bin \--with-jdk-home=/cygdrive/c/Program\ Files\ \(x86\)/Java/jdk1.6.0_21 --with-ant-home=/cygdrive/f/Build_OOo3.4.1/apache-ant-1.8.4 \--with-dmake-url="http://dmake.apache-extras.org.codespot.com/files/dmake-4.12.tar.bz2" \--with-epm-url=http://ftp.easysw.com/pub/epm/3.7/epm-3.7-source.tar.gz \--enable-pch \--disable-directx \--disable-atl \--disable-activex \--disable-binfilter \--without-junit \--enable-dbgutil
3. 下载一些额外的包以完成配置
./bootstrap
这会下载一些额外的包,并做一些配置。在我的8G内存,i5-2540CPU上需要1个小时。
当出现
“dmake successfully built and copied to F:/Build_OOo3.4.1/aoo-3.4.1/main/solenv/wntmsci12/bin/dmake.exe
bundling of dictionaries is disabled."
的时候,你就可以进行下一步了。
4. 包含环境变量
$ source winenv.set.sh
5. 编译
$ cd instsetoo_native/$ build --all
错误处理
编译过程中会出现错误,需要手动修改。
错误1:编译libxml2错误
..\testapi.c(294) : error C2001: newline in constant..\testapi.c(295) : error C2143: syntax error : missing ')' before 'return'
办法:找到testapi.c,在其294行的少一个分号,加上就OK了。
然后再
$ build --all:libxml2
错误2:No space left on device
fatal error C1085: Cannot write compiler generated file: '../../wntmsci12.pro/obj/rscicpx.obj': No space left on device导致的。
这个错误只有当你的磁盘空间不足时才会发生,所以给编译OpenOffice的磁盘留下足够的空间。
编译整个OpenOffice最好分配15G的磁盘空间。
错误3:REBASE: dbghelp.dll Rebase failed. Signed images can not be rebased.
出现了dbghelp.dll不正确的问题。办法:F:\Build_OOo3.4.1\aoo-3.4.1\main\solver\341\wntmsci12\bin目录下的
dbghelp.dll有问题,而该dbghelp.dll是根据网页提供的(路径为:C:\OpenOffice_Build_Need\aoo-3.4.1\main\external\dbghelp)
然后我在C盘下搜索,最终使用C:\Windows\winsxs\x86_microsoft-windows-imageanalysis_31bf3856ad364e35_6.1.7601.17514_none_4a6381a588654ba6目录下的dbghelp.dll,
该dll大小为834KB.
好了,至此已经完成了配置,下一篇打算介绍如何,partial build.
这样我们就可以修改单个模块,调试单个模块了,这样这个模块也就能为你所用。
并且,如有可能我还打算介绍下,如何将这些模块集成到Visual Studio 2008中,这样编译,调试起来就非常方便了。。
哈哈!!!