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 pin.svg

    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.