Jump to content

Development/BuildingOnWSL

From The Document Foundation Wiki

Introduction

Windows Subsystem for Linux (WSL) is a mechanism to run Linux applications unchanged in Windows. The initial version of this functionality is called WSL 1, and a newer, usually faster version which uses virtualization is called WSL 2.

The first step to build LibreOffice using WSL is to install WSL itself. You can follow instructions on Microsoft Website to install WSL, preferably WSL 2.

There are multiple Linux distributions available in Microsoft store, and you can choose your desired distribution. Here we discuss Ubuntu, and you may refer to Development/BuildingOnLinux to see instructions for other distributions. Essentially, the build is very similar to what is done on Linux.

Build dependencies

On Debian and Ubuntu, you can install the dependencies with:

sudo apt-get install git build-essential zip ccache junit4 libkrb5-dev nasm graphviz python3 python3-dev qtbase5-dev libkf5coreaddons-dev libkf5i18n-dev libkf5config-dev libkf5windowsystem-dev libkf5kio-dev libqt5x11extras5-dev autoconf libcups2-dev libfontconfig1-dev gperf openjdk-17-jdk doxygen libxslt1-dev xsltproc libxml2-utils libxrandr-dev libx11-dev bison flex libgtk-3-dev libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev ant ant-optional libnss3-dev libavahi-client-dev libxt-dev

Note:
Since Sept 22 2023, gcc/g++ must be at least version 12. sudo apt install gcc-12 g++-12 and then sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 60 --slave /usr/bin/g++ g++ /usr/bin/g++-12

Cloning and building

You can clone the LibreOffice core repository with:

$ git clone https://gerrit.libreoffice.org/core libreoffice
$ cd libreoffice

You need a suitable configuration for the build that you can put inside autogen.input file. This is a suggested configuration:

--enable-dbgutil
--without-doxygen
--without-dotnet

Please note that the new .NET is not working at the moment.

After that, you should configure the build with:

$ ./autogen.sh

The next step is to invoke the make command. You can simply invoke:

$ make

And to also run the tests:

$ make check

Running your build

When build is finished, you can start LibreOffice with:

$ instdir/program/soffice

If you want to run specific application like Writer or Calc, you can invoke:

$ instdir/program/soffice --writer
$ instdir/program/soffice --calc

Tips

Error During the Build

Sometimes build may fail with an error like this:

g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
make[1]: *** Deleting file '/build/core/wordir/CxxObject/sw/source/filter/abc.o'
make[1]: *** Waiting for unfinished jobs....
{standard input}: Assembler messages:
...
g++: fatal error: Killed signal terminated program cc1plus
compilation terminated.
...

In this case, don't panic! This might be because of lack of enough memory, and caused by oom in Linux. You can re-run with limited load, for example make -l 10, and the build will continue. If you are in doubt, use journalctl to search the logs for oom.

Using VS Code IDE

You can use Visual Studio Code (VSCode) IDE to edit and debug the code with WSL on Windows. You have to create the VSCode IDE integration with:

$ make vscode-ide-integration

Assuming that you have VSCode installed, you should use "Connect to WSL" in the start page to connect to WSL. Then, you may open the LibreOffice Project by using "Open Folder...", and picking the core folder.

Please note that you need to have debugging symbols enabled (for example with --enable-dbgutil) to be able to use the debugging feature. Then, you may simply use the "RUN AND DEBUG" button to debug LibreOffice. Please note that you need the suggested "C/C++" extension to be able to use the IDE with LibreOffice C/C++ code for debugging and code completion.