如何编译 LibreOffice

From The Document Foundation Wiki
Jump to: navigation, search

本页文档讲解了如何基于一个名为“核心(core)”的 git 源码仓库编译 LibreOffice 当前的开发版本;关于如何编译诸如3.3和3.4的旧版本的文档请移步这里

准备工作

依赖关系

第一步要确定您已经具备了在你的平台上编译本软件所依赖的所有软件包。以下链接页面说明了在WindowsLinuxMacOS上分别需要哪些软件包,以及如何安装它们。

磁盘空间

要下载全部 git 仓库并将本产品编译并打包,您至少需要 7 至 10GB 的磁盘空间,具体取决于您使用的平台、编译和自动生成(autogen)时使用的选项,如果您编译的是调试版本还需要额外的几 GB 空间。

请留意如果您不只是出于个人爱好而编译本软件,您很可能需要不止一个的工作目录(稍后我们会看到如何设置它们)。一个工作目录让您不需复制整个 git 历史便可拥有独立的开发环境,但是每个工作目录仍然需要 6 至 9GB 的空间。

获取源码

在余下的教程里我们将以 ~/git 为源码主目录进行讲解。当然您也可以自由选择在哪个目录里进行。现在我们来下载“核心”代码仓库:

$ mkdir git
$ cd git
$ git clone git://anongit.freedesktop.org/libreoffice/core libo
Cloning into libo...
Remote: Counting objects: 76845, done.
remote: Compressing objects: 100% (17328/17328), done.
remote: Total 76845 (delta 60786), reused 74045 (delta 58579)
Receiving objects: 100% (76845/76845), 15.82 MiB | 1.17 MiB/s, done.
Resolving deltas: 100% (60786/60786), done.
$ cd libo

提示 1:如果您有 ssh 登录权限,用这条命令克隆源码仓库可能更适合您:

$ git clone ssh://<<username>>@git.freedesktop.org/git/libreoffice/core libo

提示 2:由于您所处的地点、时段、月相盈亏等诸多不确定因素,克隆整个 git 仓库可能很慢,甚至在开始一段时间后失败。遇到这种情况,请使用我们提供的每周更新的源码仓库压缩包 如果按照上面的步骤遇到问题,下载这个脚本:libo_git_from_tar.sh,照下面运行:

$ mkdir git
$ ./libo_git_from_tar.sh -d ./git/libo

运行 ./libo_git_from_tar.sh --help 可以得到关于如何使用这个脚本的更详尽信息。

检出发布版(release)分支

默认状态下 git 在一个新克隆里提供给您的是“主要(master)”分支。 如果您想切换到一个发布版的分支上开发,(在运行 ‘autogen.sh’之前)先运行下面的命令:

$ git checkout -b libreoffice-3-5 origin/libreoffice-3-5

克隆其它仓库之后(见下面‘make fetch’的段落),用下面的命令将它们也切换到发布版的分支上:

$ ./g checkout -b libreoffice-3-5 origin/libreoffice-3-5

自动生成

现在,您需要通过运行一个名叫“autogen.sh”的脚本来配置您的编译。 这个脚本可以使用很多选项,请参照这个选项说明页面的信息。

第一次运行了 autogen.sh 之后,您也可以运行下面的命令得到这些选项的列表:

$ ./autogen.sh
[long output]
$ ./autogen.sh --help
'configure' configures LibreOffice 3.3 to adapt to many kinds of systems.

Usage: ./configure [OPTION]... [VAR=VALUE]...

To assign environment variables (e.g., CC, CFLAGS...), specify them as
VAR=VALUE.  See below for descriptions of some of the useful variables.

Defaults for the options are specified in brackets.

Configuration:
  -h, --help              display this help and exit
      --help=short        display options specific to this package
      --help=recursive    display the short help of all the included packages
[....]

您对选项的配置会因为您使用的平台和发行版而不同。下面是一些示例:

$ ./autogen.sh --with-parallelism=6 --without-junit # 在 linux 上使用
$ ./autogen.sh --with-parallelism=8 # 在 MacOS 上使用
$ ./autogen.sh --without-help --without-myspell-dicts # 不使用外部仓库(只使用核心源码库)

编译

翻译进行中……

编译技巧

翻译进行中……