[OPENSOURCE]LIBREOFFICE编译的问题

LibreOffice是OpenOffice.org办公套件衍生版, 同样自由开源,以Mozilla Public License V2.0许可证分发源代码,但相比OpenOffice增加了很多特色功能。LibreOffice拥有强大的数据导入和导出功能,能直接导入PDF文档、微软Works、LotusWord,支持主要的OpenXML格式。软件本身并不局限于Debian和Ubuntu平台,现已持Windows、Mac和其它Linux发行版等多个系统平台。

https://www.libreoffice.org/LibreOffice的官网网址

生成依赖项
在开始攻击Windows上的LibreOffice之前,需要按照以下说明设置构建环境。也要阅读我们的通用建筑提示。

安装Visual Studio
您需要Microsoft编译器/开发套件Visual Studio,可从以下网址获取:https://Visual Studio.Microsoft.com/downloads/。

有一个免费的版本,社区版,它包含了构建所有LibreOffice功能所需的一切:https://visualstudio.microsoft.com/vs/Community/

当前主版本(从LibreOffice 7.0开始)需要visualstudio2019v16.4(或等效的Visual Studio构建工具)。

自VS 2017以来,我们提供了一个单独的生成工具包,其中包括编译器、大多数工具链和库,而无需安装Visual Studio IDE:https://Visual Studio.microsoft.com/downloads/#Build-Tools-for-Visual-Studio-2019

对于旧的LibreOffice版本,所需的Visual Studio版本是:

LibreOffice 4.4需要Visual Studio 2012
LibreOffice 5.0需要Visual Studio 2013
LibreOffice 5.4需要Visual Studio 2015
LibreOffice 6.2需要Visual Studio 2017
LibreOffice 6.3可以与Visual Studio 2017或2019一起构建
VisualStudio 2019可以可选地安装2017和2015编译器(VS 2015/2017 C++ + Bu建dToo工具)。唯一缺少的是旧的C++可重分配MSM包,所以旧的配置文件.ac脚本需要一个小补丁来构建MSI包。

较旧的Visual Studio版本可在https://Visual Studio.microsoft.com/vs/Older downloads/上找到。

视觉工作室2019
visualstudio2019v16.4和Visual Studio构建工具2019在当前主版本上工作。一般来说,至少必须安装VisualStudio中的“C++开发桌面”工作负载,否则LyBeffice生成配置脚本可能无法检测到VS。

可再发行的MSM(仅用于构建MSI安装程序)不是2019年工作负载选择的一部分,但需要从单个组件选择中选择。有关详细信息,请参阅VS Developer社区问题的注释,14.20.27404.0和14.20.27508的MergeModules在哪里?

Im-jabber.svg
注:
当相应的UI语言作为Visual Studio安装的一部分安装时,visualstudio命令行工具使用系统OEM代码页将消息输出到控制台。Windows上的OEM代码页取决于intl.cpl applet(设置说明)中使用“非Unicode程序语言”定义的系统区域设置,并且通常与cygwin shell(通常是UTF-8)中设置的编码不兼容。这会混淆构建日志中工具的输出。
您可能需要确保在安装Visual Studio时只安装英语UI,以避免出现此问题。

安装Java
无论您使用的是哪个版本的Visual Studio,都需要

Java开发工具包(JDK)版本8或更高版本。如果您是为32位窗口构建的,请确保获得32位SDK;如果您是为64位窗口构建的,请确保获得64位SDK(使用--enable-64-bit)。请访问http://www.oracle.com/technetwork/java/javase/downloads/index.html。
安装Cygwin和其他依赖项
Im-jabber.svg
注:
执行以下操作的最简单方法是使用LODE,除了安装Visual Studio和Java之外,LODE还自动化了所有必要的操作。
如果你想用艰苦的方式去做,继续读下去。

安装Cygwin要求
在Windows上,必须从www.Cygwin.com安装Cygwin。建议版本:2.11或更高版本。

最简单的方法是下载Cygwin的setup-x86.exe(32位)或setup-x86_64.exe(64位)。

如果可能,最好使用64位Cygwin,因为它不太可能与fork()有问题(有关详细信息,请参阅Cygwin FAQ)。
libgpg error 1.36不支持gawk 5.0,在发布更新之前,请在Cygwin中安装gawk 4.2。
此指令使用64位版本作为示例:运行cmd并导航到下载目录(如果导航有问题,也可以将setup-x86_64.exe从文件资源管理器拖到cmd窗口中),然后复制并粘贴下面的命令以运行setup-x86_64.exe,并预先选择所需包的列表。

setup-x86_64.exe-P autoconf-P automake-P bison-P cabrect-P doxygen-P flex-P gcc-g++^
-P gettext devel git-P gnupg-P gperf-P make-P mintty^
-P nasm-P openssh-P openssl-P补丁-P perl-P python-P python3^
-P pkg config-P rsync-P unzip-P vim-P wget-P zip-P perl存档zip^
-P perl字体TTF-P perl IO字符串
这将启动GUI并要求您手动选择安装路径等,但通过命令行传递的包是预先选择的,这意味着您只需要接受选择。

注意:Cygwin的安装路径不能包含非ASCII字母,以避免autogen.sh/configure问题(如果包含,请将Cygwin安装的文件夹移到新位置并更新其Windows快捷方式和开始菜单项)

 

或者,运行setup-x86.exe或setup-x86_64.exe实用程序,按“查看”将包视图模式切换到“完全”,直到旁边显示“完全”,然后手动选择上述命令中列出的包进行安装。

如果升级了Cygwin,则可能需要运行rebasell命令(如果是第一次安装Cygwin,则不需要):
关闭所有Cygwin控制台,运行c:\ Cygwin\bin\dash.exe,然后在终端中启动/bin/rebasell。

遗留Cygwin问题
这些问题在当前的Cygwin版本中不存在,但是这些信息可能对旧版本的用户有用。

在Windows 10 x64版本1511下,如果安装Cygwin 64位,则需要Cygwin 2.4.0-0.9或更高版本(有关详细信息,请参阅Cygwin邮件列表)。
Cygwin 2.10.0-1引入了一个与使用FILE_ATTRIBUTE_TEMPORARY ATTRIBUTE set处理文件相关的中断更改。这会干扰Firebird在workdir/unpacedtarball/Firebird/gen/Debug/Firebird(名称类似于fb_trace_09y6aq)中创建此类文件,从而导致由于未能删除非空目录而导致生成失败。这个问题在Cygwin 2.11中得到了解决。错误消息如下
rm:无法删除“D:/sources/lo-core1/workdir/unpacedtarball/firebird/gen/Debug/firebird”:目录不为空
如果更新Cygwin不是一个选项,则解决方法是使用文件管理器(如Windows文件资源管理器)打开该目录并手动删除留在其中的文件。
其他依赖项
安装Cygwin后,单击其桌面图标Cygwin64 Terminal打开Cygwin命令行,然后执行以下步骤:

安装GNU MAKE
GNU make 4.0+的Win32版本可用于(并且是必需的)构建LibreOffice。

最简单的方法是将它放在/opt/lo/bin中,configure会自动找到它;您还可以使用另一个位置并设置MAKE变量。或者,在构建LibreOffice时,始终使用绝对路径/opt/lo/bin/make(或者放在任何地方)调用“make”。LibreOffice不能也不应该使用Cygwin的/usr/bin/make。

mkdir -p /opt/lo/bin
cd /opt/lo/bin
wget https://dev-www.libreoffice.org/bin/cygwin/make-4.2.1-msvc.exe
cp make-4.2.1-msvc.exe make
chmod +x make


安装ant和junit
你可以在任何地方提取它们,不需要安装它们。如果您不想使用Junit,可以在稍后的autogen.sh命令中使用——而不使用Junit来禁用它。

  mkdir -p /cygdrive/c/sources
  cd /cygdrive/c/sources
  wget https://archive.apache.org/dist/ant/binaries/apache-ant-1.9.5-bin.tar.bz2
  tar -xjvf apache-ant-1.9.5-bin.tar.bz2
  wget http://downloads.sourceforge.net/project/junit/junit/4.10/junit-4.10.jar


克隆LibreOffice源代码存储库
注意:源应位于相对较短的路径中,以避免超过文件/路径名限制,并且目标路径中不能有任何空间。

 

cd /cygdrive/c/sources
  git clone https://gerrit.libreoffice.org/core libo-core


可选地创建生成目录
您可以将LibreOffice构建到签出之外的另一个目录中。这有助于保持源代码树的干净,并简化多个版本的构建。

如果要构建到单独的目录(例如/cygdrive/c/build)中,请输入以下命令:

mkdir /cygdrive/c/build
  cd /cygdrive/c/build


否则,请将目录更改为/cygdrive/c/sources/libo core文件夹:

cd/cygdrive/c/sources/libo核心
配置和生成代码
现在运行autogen.sh以配置生成:

/cygdrive/c/sources/libo核心/autogen.sh\
--带外部tar=/cygdrive/c/sources/lo externalsrc\
--使用junit=/cygdrive/c/sources/junit-4.10.jar\
--使用ant home=/cygdrive/c/sources/apache-ant-1.9.5\
--enable pch—禁用ccache\
[其他开关,如果你知道你在做什么:-)…]
注意,不建议在Windows上使用ccache。如果您在Cygwin环境中安装了它,请确保安全,并使用--disable ccache(如上面的命令所示)禁用它。

如果autogen.sh脚本抱怨它找不到某些头文件,则可能是它找不到您的Windows SDK,或者它发现了损坏的SDK。如果您在计算机上安装了多个版本的Visual Studio,可能会发生这种情况,尤其是如果您安装了Beta版本,即使您卸载了这些版本。在这种情况下,可以使用--with windows sdk=7.1A,可能用另一个版本的sdk替换7.1A来选择特定的未损坏版本。对于Visual Studio 2015,请使用--with Visual Studio=2015。

在文件autogen.input中保存上次使用的参数的副本。当使用其他参数时,autogen.sh不会覆盖它。如果在没有参数的情况下再次调用autogen.sh,则它将从autogen.input获取其输入(如果存在)。

在使用zip格式的AdoptOpenJDK时,不要忘记指定——使用jdk home,因为configure.ac从注册表jdk的安装程序中检测jdk的路径,可以从Oracle集合中下载。其他jdk可能也需要这个选项(未测试)。

读取autogen.sh命令的摘要输出。如果它没有报告任何错误或相关警告,那么剩下要做的就是运行make to build LibreOffice的正确版本。在此之前,请确保防病毒软件不会导致任何问题。

/opt/lo/bin/make gbu COLOR=1;gbu COLOR=1启用彩色输出
如果此时生成进程失败,并出现错误C3861:“inetponw”:找不到标识符,这是由于Windows SDK 8的生成进程中存在错误。您可以使用--with windows sdk=7.1A选项来解决这个问题。

经营图书馆
当构建完成时没有错误,您可以使用

instdir/program/soffice.exe
Microsoft Visual Studio项目集成
LibreOffice构建系统可以为一些ide生成项目文件,包括——由于Honza Havlčchek的出色工作——Microsoft Visual Studio:(注意,这不允许完全构建,所以您仍然需要使用Cygwin来完成完全构建)

你可能感兴趣的:(Bugs修复)