OLD | NEW |
| (Empty) |
1 # Linux-specific build instructions | |
2 | |
3 ## Common checkout instructions | |
4 | |
5 This page covers Linux-specific setup and configuration. The | |
6 [general checkout | |
7 instructions](http://dev.chromium.org/developers/how-tos/get-the-code) cover | |
8 installing depot tools and checking out the code via git. | |
9 | |
10 ## Overview | |
11 | |
12 Due its complexity, Chromium uses a set of custom tools to check out and build | |
13 rather than configure/make like most projects. You _must_ use gclient and | |
14 ninja, and there is no "install" step provided. | |
15 | |
16 ### System requirements | |
17 | |
18 * **64-bits**: x86 builds are not supported on Linux. | |
19 * **Memory**: >16GB is highly recommended. | |
20 * **Disk space**: Expect a full checkout and build to take nearly 100GB. | |
21 * **Distribution**: You should be able to build Chromium on any reasonably mod
ern Linux | |
22 distribution, but there are a lot of distributions and we sometimes break | |
23 things on one or another. Internally, our development platform has been a | |
24 variant of Ubuntu 14.04 (Trusty Tahr); we expect you will have the most | |
25 luck on this platform. | |
26 | |
27 ## Software setup | |
28 | |
29 Non-Ubuntu distributions are not officially supported for building and the | |
30 instructions below might be outdated. | |
31 | |
32 ### Ubuntu | |
33 | |
34 Once you have checked out the code, run | |
35 [build/install-build-deps.sh](/build/install-build-deps.sh) The script only | |
36 supports current releases as listed on https://wiki.ubuntu.com/Releases. | |
37 This script is used to set up the canonical builders, and as such is the most | |
38 up to date reference for the required prerequisites. | |
39 | |
40 ### Debian | |
41 | |
42 Follow the Ubuntu instructions above. If you want to install the build-deps | |
43 manually, note that the original packages are for Ubuntu. Here are the Debian | |
44 equivalents: | |
45 | |
46 * libexpat-dev -> libexpat1-dev | |
47 * freetype-dev -> libfreetype6-dev | |
48 * libbzip2-dev -> libbz2-dev | |
49 * libcupsys2-dev -> libcups2-dev | |
50 | |
51 Additionally, if you're building Chromium components for Android, you'll need to | |
52 install the package: lib32z1 | |
53 | |
54 ### openSUSE | |
55 | |
56 For openSUSE 11.0 and later, see | |
57 [Linux openSUSE Build Instructions](linux_open_suse_build_instructions.md). | |
58 | |
59 ### Fedora | |
60 | |
61 Recent systems: | |
62 | |
63 su -c 'yum install git python bzip2 tar pkgconfig atk-devel alsa-lib-devel \ | |
64 bison binutils brlapi-devel bluez-libs-devel bzip2-devel cairo-devel \ | |
65 cups-devel dbus-devel dbus-glib-devel expat-devel fontconfig-devel \ | |
66 freetype-devel gcc-c++ GConf2-devel glib2-devel glibc.i686 gperf \ | |
67 glib2-devel gtk2-devel gtk3-devel java-1.*.0-openjdk-devel libatomic \ | |
68 libcap-devel libffi-devel libgcc.i686 libgnome-keyring-devel libjpeg-devel \ | |
69 libstdc++.i686 libX11-devel libXScrnSaver-devel libXtst-devel \ | |
70 libxkbcommon-x11-devel ncurses-compat-libs nspr-devel nss-devel pam-devel \ | |
71 pango-devel pciutils-devel pulseaudio-libs-devel zlib.i686 httpd mod_ssl \ | |
72 php php-cli python-psutil wdiff' | |
73 | |
74 The msttcorefonts packages can be obtained by following the instructions | |
75 present [here](http://www.fedorafaq.org/#installfonts). For the optional | |
76 packages: | |
77 | |
78 * php-cgi is provided by the php-cli package | |
79 * sun-java6-fonts doesn't exist in Fedora repositories, needs investigating | |
80 | |
81 ### Arch Linux | |
82 | |
83 Most of these packages are probably already installed since they're often used, | |
84 and the parameter --needed ensures that packages up to date are not reinstalled. | |
85 | |
86 sudo pacman -S --needed python perl gcc gcc-libs bison flex gperf pkgconfig
\ | |
87 nss alsa-lib gconf glib2 gtk2 nspr ttf-ms-fonts freetype2 cairo dbus \ | |
88 libgnome-keyring | |
89 | |
90 For the optional packages on Arch Linux: | |
91 | |
92 * php-cgi is provided with pacman | |
93 * wdiff is not in the main repository but dwdiff is. You can get wdiff in | |
94 AUR/yaourt | |
95 * sun-java6-fonts do not seem to be in main repository or AUR. | |
96 | |
97 ### Mandriva | |
98 | |
99 urpmi lib64fontconfig-devel lib64alsa2-devel lib64dbus-1-devel \ | |
100 lib64GConf2-devel lib64freetype6-devel lib64atk1.0-devel lib64gtk+2.0_0-deve
l \ | |
101 lib64pango1.0-devel lib64cairo-devel lib64nss-devel lib64nspr-devel g++ pyth
on \ | |
102 perl bison flex subversion gperf | |
103 | |
104 * msttcorefonts are not available, you will need to build your own (see | |
105 instructions, not hard to do, see | |
106 [mandriva_msttcorefonts.md](mandriva_msttcorefonts.md)) or use drakfont to | |
107 import the fonts from a windows installation | |
108 * These packages are for 64 bit, to download the 32 bit packages, | |
109 substitute lib64 with lib | |
110 * Some of these packages might not be explicitly necessary as they come as | |
111 dependencies, there is no harm in including them however. | |
112 | |
113 ### Gentoo | |
114 | |
115 emerge www-client/chromium | |
116 | |
117 ## Troubleshooting | |
118 | |
119 ### Linker Crashes | |
120 | |
121 If, during the final link stage: | |
122 | |
123 LINK out/Debug/chrome | |
124 | |
125 You get an error like: | |
126 | |
127 collect2: ld terminated with signal 6 Aborted terminate called after throwin
g an | |
128 instance of 'std::bad_alloc' | |
129 | |
130 collect2: ld terminated with signal 11 [Segmentation fault], core dumped | |
131 | |
132 you are probably running out of memory when linking. You *must* use a 64-bit | |
133 system to build. Try the following build settings (see [GN build | |
134 configuration](https://www.chromium.org/developers/gn-build-configuration) for | |
135 setting): | |
136 | |
137 * Build in release mode (debugging symbols require more memory). | |
138 `is_debug = false` | |
139 * Turn off symbols. `symbol_level = 0` | |
140 * Build in component mode (this is for developers only, it will be slower and | |
141 may have broken functionality). `is_component_build = true` | |
142 | |
143 ## More links | |
144 | |
145 * [Faster builds on Linux](linux_faster_builds.md) | |
146 * Information about [building with Clang](clang.md). | |
147 * You may want to | |
148 [use a chroot](using_a_linux_chroot.md) to | |
149 isolate yourself from versioning or packaging conflicts (or to run the | |
150 layout tests). | |
151 * Cross-compiling for ARM? See [LinuxChromiumArm](linux_chromium_arm.md). | |
152 * Want to use Eclipse as your IDE? See | |
153 [LinuxEclipseDev](linux_eclipse_dev.md). | |
154 * Built version as Default Browser? See | |
155 [LinuxDevBuildAsDefaultBrowser](linux_dev_build_as_default_browser.md). | |
156 | |
157 ## Next Steps | |
158 | |
159 If you want to contribute to the effort toward a Chromium-based browser for | |
160 Linux, please check out the [Linux Development page](linux_development.md) for | |
161 more information. | |
OLD | NEW |