
Removes redundant instructions from the platform-specific plages and the main "get the code" page on the sites page. The platform pages should have only non-redundant platform-specific information. When I did this the Linux page was basically empty with a link the the prerequistes page, so I consolidated these two pages, leaving a placeholder in the old prerequisites page for now to avoid breaking links. There was a lot of out-of-date information removed. Review-Url: https://codereview.chromium.org/2014753002 Cr-Commit-Position: refs/heads/master@{#396071}
5.8 KiB
Linux-specific build instructions
Common checkout instructions
This page covers Linux-specific setup and configuration. The general checkout instructions cover installing depot tools and checking out the code via git.
Overview
Due its complexity, Chromium uses a set of custom tools to check out and build rather than configure/make like most projects. You must use gclient and ninja, and there is no "install" step provided.
System requirements
- 64-bits: x86 builds are not supported on Linux.
- Memory: >16GB is highly recommended.
- Disk space: Expect a full checkout and build to take nearly 100GB.
- Distribution: You should be able to build Chromium on any reasonably modern Linux distribution, but there are a lot of distributions and we sometimes break things on one or another. Internally, our development platform has been a variant of Ubuntu 14.04 (Trusty Tahr); we expect you will have the most luck on this platform.
Software setup
Non-Ubuntu distributions are not officially supported for building and the instructions below might be outdated.
Ubuntu
Once you have checked out the code, run build/install-build-deps.sh The script only supports current releases as listed on https://wiki.ubuntu.com/Releases. This script is used to set up the canonical builders, and as such is the most up to date reference for the required prerequisites.
Debian
Follow the Ubuntu instructions above. If you want to install the build-deps manually, note that the original packages are for Ubuntu. Here are the Debian equivalents:
- libexpat-dev -> libexpat1-dev
- freetype-dev -> libfreetype6-dev
- libbzip2-dev -> libbz2-dev
- libcupsys2-dev -> libcups2-dev
Additionally, if you're building Chromium components for Android, you'll need to install the package: lib32z1
openSUSE
For openSUSE 11.0 and later, see Linux openSUSE Build Instructions.
Fedora
Recent systems:
su -c 'yum install subversion pkgconfig python perl gcc-c++ bison flex \
gperf nss-devel nspr-devel gtk2-devel glib2-devel freetype-devel atk-devel \
pango-devel cairo-devel fontconfig-devel GConf2-devel dbus-devel \
alsa-lib-devel libX11-devel expat-devel bzip2-devel dbus-glib-devel \
elfutils-libelf-devel libjpeg-devel mesa-libGLU-devel libXScrnSaver-devel \
libgnome-keyring-devel cups-devel libXtst-devel libXt-devel pam-devel httpd \
mod_ssl php php-cli wdiff'
The msttcorefonts packages can be obtained by following the instructions present here. For the optional packages:
- php-cgi is provided by the php-cli package
- wdiff doesn't exist in Fedora repositories, a possible alternative would be dwdiff
- sun-java6-fonts doesn't exist in Fedora repositories, needs investigating
Arch Linux
Most of these packages are probably already installed since they're often used, and the parameter --needed ensures that packages up to date are not reinstalled.
sudo pacman -S --needed python perl gcc gcc-libs bison flex gperf pkgconfig \
nss alsa-lib gconf glib2 gtk2 nspr ttf-ms-fonts freetype2 cairo dbus \
libgnome-keyring
For the optional packages on Arch Linux:
- php-cgi is provided with pacman
- wdiff is not in the main repository but dwdiff is. You can get wdiff in AUR/yaourt
- sun-java6-fonts do not seem to be in main repository or AUR.
Mandriva
urpmi lib64fontconfig-devel lib64alsa2-devel lib64dbus-1-devel \
lib64GConf2-devel lib64freetype6-devel lib64atk1.0-devel lib64gtk+2.0_0-devel \
lib64pango1.0-devel lib64cairo-devel lib64nss-devel lib64nspr-devel g++ python \
perl bison flex subversion gperf
- msttcorefonts are not available, you will need to build your own (see instructions, not hard to do, see mandriva_msttcorefonts.md) or use drakfont to import the fonts from a windows installation
- These packages are for 64 bit, to download the 32 bit packages, substitute lib64 with lib
- Some of these packages might not be explicitly necessary as they come as dependencies, there is no harm in including them however.
Gentoo
emerge www-client/chromium
Troubleshooting
Linker Crashes
If, during the final link stage:
LINK out/Debug/chrome
You get an error like:
collect2: ld terminated with signal 6 Aborted terminate called after throwing an
instance of 'std::bad_alloc'
collect2: ld terminated with signal 11 [Segmentation fault], core dumped
you are probably running out of memory when linking. You must use a 64-bit system to build. Try the following build settings (see GN build configuration for setting):
- Build in release mode (debugging symbols require more memory).
is_debug = false
- Turn off symbols.
symbol_level = 0
- Build in component mode (this is for developers only, it will be slower and
may have broken functionality).
is_component_build = true
More links
- Faster builds on Linux
- Information about building with Clang.
- You may want to use a chroot to isolate yourself from versioning or packaging conflicts (or to run the layout tests).
- Cross-compiling for ARM? See LinuxChromiumArm.
- Want to use Eclipse as your IDE? See LinuxEclipseDev.
- Built version as Default Browser? See LinuxDevBuildAsDefaultBrowser.
Next Steps
If you want to contribute to the effort toward a Chromium-based browser for Linux, please check out the Linux Development page for more information.