mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-11 19:07:15 +03:00
7fa71fb7eb
This removes the '$' character so that it is easier to copy commands directly from the build instructions and then executing them without first having to remove the '$' character.
105 lines
3.4 KiB
Markdown
105 lines
3.4 KiB
Markdown
# SerenityOS build instructions
|
|
|
|
## Prerequisites
|
|
|
|
Make sure you have all the dependencies installed:
|
|
|
|
### Debian / Ubuntu
|
|
|
|
```console
|
|
sudo apt install build-essential cmake curl libmpfr-dev libmpc-dev libgmp-dev e2fsprogs ninja-build qemu-system-i386 qemu-utils ccache rsync
|
|
```
|
|
|
|
#### GCC 10
|
|
|
|
On Ubuntu gcc-10 is available in the repositories of 20.04 (Focal) and later - add the `ubuntu-toolchain-r/test` PPA if you're running an older version:
|
|
|
|
```console
|
|
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
|
|
```
|
|
|
|
On Debian you can use the Debian testing branch:
|
|
|
|
```console
|
|
sudo echo "deb http://http.us.debian.org/debian/ testing non-free contrib main" >> /etc/apt/sources.list
|
|
sudo apt update
|
|
```
|
|
|
|
Now on Ubuntu or Debian you can install gcc-10 with apt like this:
|
|
|
|
```console
|
|
sudo apt install gcc-10 g++-10
|
|
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-10 900 --slave /usr/bin/g++ g++ /usr/bin/g++-10
|
|
```
|
|
|
|
If you don't want to stay on the Debian testing branch you can switch back by running:
|
|
|
|
```console
|
|
sudo sed -i '$d' /etc/apt/sources.list
|
|
sudo apt update
|
|
```
|
|
|
|
#### QEMU 5 or later
|
|
|
|
QEMU version 5 is available in Ubuntu 20.10. For earlier versions, you can build version 6 using the `Toolchain/BuildQemu.sh` script.
|
|
You may need the gtk+ 3.0 dev package:
|
|
|
|
```console
|
|
sudo apt install libpixman-1-dev libgtk-3-dev
|
|
```
|
|
|
|
### Windows
|
|
|
|
If you're on Windows you can use WSL2 to build SerenityOS. Please have a look at the [Windows guide](BuildInstructionsWindows.md)
|
|
for details.
|
|
|
|
### Arch Linux / Manjaro
|
|
|
|
```console
|
|
sudo pacman -S --needed base-devel cmake curl mpfr libmpc gmp e2fsprogs ninja qemu qemu-arch-extra ccache rsync
|
|
```
|
|
|
|
### Other systems
|
|
|
|
There is also documentation for installing the build prerequisites for some less commonly used systems:
|
|
|
|
* [Other Linux distributions and *NIX systems](BuildInstructionsOther.md)
|
|
* [macOS](BuildInstructionsMacOS.md)
|
|
|
|
## Build
|
|
|
|
In order to build SerenityOS you will first need to build the toolchain by running the following command:
|
|
|
|
```console
|
|
Meta/serenity.sh rebuild-toolchain
|
|
```
|
|
|
|
Later on, when you use `git pull` to get the latest changes, there's (usually) no need to rebuild the toolchain.
|
|
|
|
Run the following command to build and run SerenityOS:
|
|
|
|
```console
|
|
Meta/serenity.sh run
|
|
```
|
|
|
|
This will compile all of SerenityOS and install the built files into the `Build/i686/Root` directory inside your Git
|
|
repository. It will also build a disk image and start SerenityOS using QEMU.
|
|
|
|
Note that the `anon` user is able to become `root` without a password by default, as a development convenience.
|
|
To prevent this, remove `anon` from the `wheel` group and he will no longer be able to run `/bin/su`.
|
|
|
|
If you want to test whether your code changes compile without running the VM you can use
|
|
`Meta/serenity.sh build`. The `serenity.sh` script also provides a number of other commands. Run the script without
|
|
arguments for a list.
|
|
|
|
## Ports
|
|
|
|
To add a package from the ports collection to Serenity, for example curl, change into the `Ports/curl` directory and
|
|
run `./package.sh`. The source code for the package will be downloaded and the package will be built. The next time you
|
|
start Serenity, `curl` will be available.
|
|
|
|
## More information
|
|
|
|
At this point you should have a fully functioning VM for SerenityOS. The [advanced build instructions guide](AdvancedBuildInstructions.md)
|
|
has more information for some less commonly used features of the build system.
|