Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2815)

Unified Diff: docs/linux_build_instructions.md

Issue 2014753002: Update build instructions for Linux and Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « docs/clang.md ('k') | docs/linux_build_instructions_prerequisites.md » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: docs/linux_build_instructions.md
diff --git a/docs/linux_build_instructions.md b/docs/linux_build_instructions.md
index 11a3b23e224ad6f5d3f1db94290b2a817b9a213f..4f97bf2ea3ead6ccf477679c17e7b5cbcef6d9ca 100644
--- a/docs/linux_build_instructions.md
+++ b/docs/linux_build_instructions.md
@@ -1,133 +1,152 @@
# Linux-specific build instructions
-[TOC]
+## Common checkout instructions
-## Get the code
-
-[Get the Code](https://www.chromium.org/developers/how-tos/get-the-code). The
-general instructions on the "Get the code" page cover basic Linux build setup
-and configuration.
-
-This page documents some additional Linux-specific build issues.
+This page covers Linux-specific setup and configuration. The
+[general checkout
+instructions](http://dev.chromium.org/developers/how-tos/get-the-code) 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.
-Here's an overview of the steps you'll run:
-
-1. **gclient**. A checkout involves pulling nearly 100 different SVN
- repositories of code. This process is managed with a tool called `gclient`.
-1. **GN**. Cross-platform build configuration system. It generates ninja
- build files. Running `gn` is analogous to the `./configure` step seen in
- most other software.
-1. **ninja**. The actual build itself uses `ninja`. A prebuilt binary is in
- `depot_tools` and should already be in your path if you followed the steps
- to check out Chromium.
-1. We don't provide any sort of "install" step.
-1. You may want to
- [use a chroot](using_a_linux_chroot.md) to
- isolate yourself from versioning or packaging conflicts (or to run the
- layout tests).
+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.
-## Getting a checkout
+### System requirements
-[Prerequisites](linux_build_instructions_prerequisites.md): what you need before
-you build.
+* **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.
-**Note**. If you are working on Chromium OS and already have sources in
-`chromiumos/chromium`, you **must** run `chrome_set_ver --runhooks` to set the
-correct dependencies. This step is otherwise performed by `gclient` as part of
-your checkout.
+## Software setup
-## Compilation
+Non-Ubuntu distributions are not officially supported for building and the
+instructions below might be outdated.
-The "`src/`" directory is an artifact of `gclient`. Start with:
+### Ubuntu
- $ cd src
+Once you have checked out the code, run
+[build/install-build-deps.sh](/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.
-### Faster builds
+### Debian
-See [Linux Faster Builds](linux_faster_builds.md)
+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:
-### Build every test
+* libexpat-dev -> libexpat1-dev
+* freetype-dev -> libfreetype6-dev
+* libbzip2-dev -> libbz2-dev
+* libcupsys2-dev -> libcups2-dev
- $ ninja -C out/Debug
+Additionally, if you're building Chromium components for Android, you'll need to
+install the package: lib32z1
-The above builds all libraries and tests in all components. **It will take
-hours.**
+### openSUSE
-Specifying other target names to restrict the build to just what you're
-interested in. To build just the simplest unit test:
+For openSUSE 11.0 and later, see
+[Linux openSUSE Build Instructions](linux_open_suse_build_instructions.md).
- $ ninja -C out/Debug base_unittests
+### Fedora
-### Clang builds
+Recent systems:
-Information about building with Clang can be found [here](clang.md).
+ 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'
-### Output
+The msttcorefonts packages can be obtained by following the instructions
+present [here](http://www.fedorafaq.org/#installfonts). For the optional
+packages:
-Executables are written in `src/out/Debug/` for Debug builds, and
-`src/out/Release/` for Release builds.
+* 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
-### Release mode
+### Arch Linux
-Pass `-C out/Release` to the ninja invocation:
+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.
- $ ninja -C out/Release chrome
+ 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
-### Seeing the commands
+For the optional packages on Arch Linux:
-If you want to see the actual commands that ninja is invoking, add `-v` to the
-ninja invocation.
+* 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.
- $ ninja -v -C out/Debug chrome
+### Mandriva
-This is useful if, for example, you are debugging gyp changes, or otherwise need
-to see what ninja is actually doing.
+ 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
-### Clean builds
+* msttcorefonts are not available, you will need to build your own (see
+instructions, not hard to do, see
+[mandriva_msttcorefonts.md](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.
-You can clean the build directory (`out/Default` in this example):
+### Gentoo
- gn clean out/Default
+ emerge www-client/chromium
-This will delete all files except a bootstrap ninja file necessary for
-recreating the build.
-
-Ninja can also be used to clean a build with `ninja -C out/Debug -t clean` but
-this will not be as complete as the above methods.
+## Troubleshooting
### Linker Crashes
If, during the final link stage:
- LINK(target) out/Debug/chrome
+ 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 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. Try one of:
+ collect2: ld terminated with signal 11 [Segmentation fault], core dumped
-1. Use the `gold` linker
-1. Build on a 64-bit computer
-1. Build in Release mode (debugging symbols require a lot of memory)
-1. Build as shared libraries (note: this build is for developers only, and may
- have broken functionality)
+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](https://www.chromium.org/developers/gn-build-configuration) for
+setting):
-Most of these are described on the [Linux Faster Builds](linux_faster_builds.md)
-page.
+* 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`
-## Advanced Features
+## More links
-* Want to use the (in development) GN build workflow? See
- [GN Quick Start](../tools/gn/docs/quick_start.md).
-* Building frequently? See [LinuxFasterBuilds](linux_faster_builds.md).
+* [Faster builds on Linux](linux_faster_builds.md)
+* Information about [building with Clang](clang.md).
+* You may want to
+ [use a chroot](using_a_linux_chroot.md) to
+ isolate yourself from versioning or packaging conflicts (or to run the
+ layout tests).
* Cross-compiling for ARM? See [LinuxChromiumArm](linux_chromium_arm.md).
* Want to use Eclipse as your IDE? See
[LinuxEclipseDev](linux_eclipse_dev.md).
« no previous file with comments | « docs/clang.md ('k') | docs/linux_build_instructions_prerequisites.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698