common/doc/building.html
changeset 45227 97be1bcd7b25
parent 45103 85999d3d05f0
child 45763 2a2e56f4c03b
equal deleted inserted replaced
45108:8ad1bd49f4bc 45227:97be1bcd7b25
     1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     1 <!DOCTYPE html>
     2 <html xmlns="http://www.w3.org/1999/xhtml">
     2 <html>
     3 <head>
     3 <head>
     4   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
     4   <meta charset="utf-8">
     5   <meta http-equiv="Content-Style-Type" content="text/css" />
     5   <meta name="generator" content="pandoc">
     6   <meta name="generator" content="pandoc" />
     6   <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
     7   <title>OpenJDK Build README</title>
     7   <title>OpenJDK Build README</title>
     8   <style type="text/css">code{white-space: pre;}</style>
     8   <style type="text/css">code{white-space: pre;}</style>
     9   <link rel="stylesheet" href=" ../../jdk/make/data/docs-resources/specs/resources/jdk-default.css" type="text/css" />
     9   <link rel="stylesheet" href="../../jdk/make/data/docs-resources/specs/resources/jdk-default.css">
       
    10   <!--[if lt IE 9]>
       
    11     <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
       
    12   <![endif]-->
    10 </head>
    13 </head>
    11 <body>
    14 <body>
    12 <div id="header">
    15 <header>
    13 <h1 class="title">OpenJDK Build README</h1>
    16 <h1 class="title">OpenJDK Build README</h1>
    14 </div>
    17 </header>
    15 <div class="figure">
    18 <figure>
    16 <img src="http://openjdk.java.net/images/openjdk.png" alt="OpenJDK" />
    19 <img src="http://openjdk.java.net/images/openjdk.png" alt="OpenJDK" /><figcaption>OpenJDK</figcaption>
    17 <p class="caption">OpenJDK</p>
    20 </figure>
    18 </div>
       
    19 <hr />
    21 <hr />
    20 <h2 id="introduction">Introduction</h2>
    22 <h2 id="introduction">Introduction</h2>
    21 <p>This README file contains build instructions for the <a href="http://openjdk.java.net">OpenJDK</a>. Building the source code for the OpenJDK requires a certain degree of technical expertise.</p>
    23 <p>This README file contains build instructions for the <a href="http://openjdk.java.net">OpenJDK</a>. Building the source code for the OpenJDK requires a certain degree of technical expertise.</p>
    22 <h3 id="this-is-a-major-re-write-of-this-document.">!!!!!!!!!!!!!!! THIS IS A MAJOR RE-WRITE of this document. !!!!!!!!!!!!!</h3>
    24 <h3 id="this-is-a-major-re-write-of-this-document.">!!!!!!!!!!!!!!! THIS IS A MAJOR RE-WRITE of this document. !!!!!!!!!!!!!</h3>
    23 <p>Some Headlines:</p>
    25 <p>Some Headlines:</p>
   147 <p>At a minimum, the <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm">Studio 12 Update 4 Compilers</a> (containing version 5.13 of the C and C++ compilers) is required, including specific patches.</p>
   149 <p>At a minimum, the <a href="http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.htm">Studio 12 Update 4 Compilers</a> (containing version 5.13 of the C and C++ compilers) is required, including specific patches.</p>
   148 <p>The Solaris Studio installation should contain at least these packages:</p>
   150 <p>The Solaris Studio installation should contain at least these packages:</p>
   149 <table>
   151 <table>
   150 <thead>
   152 <thead>
   151 <tr class="header">
   153 <tr class="header">
   152 <th align="left">Package</th>
   154 <th style="text-align: left;">Package</th>
   153 <th align="left">Version</th>
   155 <th style="text-align: left;">Version</th>
   154 </tr>
   156 </tr>
   155 </thead>
   157 </thead>
   156 <tbody>
   158 <tbody>
   157 <tr class="odd">
   159 <tr class="odd">
   158 <td align="left">developer/solarisstudio-124/backend</td>
   160 <td style="text-align: left;">developer/solarisstudio-124/backend</td>
   159 <td align="left">12.4-1.0.6.0</td>
   161 <td style="text-align: left;">12.4-1.0.6.0</td>
   160 </tr>
   162 </tr>
   161 <tr class="even">
   163 <tr class="even">
   162 <td align="left">developer/solarisstudio-124/c++</td>
   164 <td style="text-align: left;">developer/solarisstudio-124/c++</td>
   163 <td align="left">12.4-1.0.10.0</td>
   165 <td style="text-align: left;">12.4-1.0.10.0</td>
   164 </tr>
   166 </tr>
   165 <tr class="odd">
   167 <tr class="odd">
   166 <td align="left">developer/solarisstudio-124/cc</td>
   168 <td style="text-align: left;">developer/solarisstudio-124/cc</td>
   167 <td align="left">12.4-1.0.4.0</td>
   169 <td style="text-align: left;">12.4-1.0.4.0</td>
   168 </tr>
   170 </tr>
   169 <tr class="even">
   171 <tr class="even">
   170 <td align="left">developer/solarisstudio-124/library/c++-libs</td>
   172 <td style="text-align: left;">developer/solarisstudio-124/library/c++-libs</td>
   171 <td align="left">12.4-1.0.10.0</td>
   173 <td style="text-align: left;">12.4-1.0.10.0</td>
   172 </tr>
   174 </tr>
   173 <tr class="odd">
   175 <tr class="odd">
   174 <td align="left">developer/solarisstudio-124/library/math-libs</td>
   176 <td style="text-align: left;">developer/solarisstudio-124/library/math-libs</td>
   175 <td align="left">12.4-1.0.0.1</td>
   177 <td style="text-align: left;">12.4-1.0.0.1</td>
   176 </tr>
   178 </tr>
   177 <tr class="even">
   179 <tr class="even">
   178 <td align="left">developer/solarisstudio-124/library/studio-gccrt</td>
   180 <td style="text-align: left;">developer/solarisstudio-124/library/studio-gccrt</td>
   179 <td align="left">12.4-1.0.0.1</td>
   181 <td style="text-align: left;">12.4-1.0.0.1</td>
   180 </tr>
   182 </tr>
   181 <tr class="odd">
   183 <tr class="odd">
   182 <td align="left">developer/solarisstudio-124/studio-common</td>
   184 <td style="text-align: left;">developer/solarisstudio-124/studio-common</td>
   183 <td align="left">12.4-1.0.0.1</td>
   185 <td style="text-align: left;">12.4-1.0.0.1</td>
   184 </tr>
   186 </tr>
   185 <tr class="even">
   187 <tr class="even">
   186 <td align="left">developer/solarisstudio-124/studio-ja</td>
   188 <td style="text-align: left;">developer/solarisstudio-124/studio-ja</td>
   187 <td align="left">12.4-1.0.0.1</td>
   189 <td style="text-align: left;">12.4-1.0.0.1</td>
   188 </tr>
   190 </tr>
   189 <tr class="odd">
   191 <tr class="odd">
   190 <td align="left">developer/solarisstudio-124/studio-legal</td>
   192 <td style="text-align: left;">developer/solarisstudio-124/studio-legal</td>
   191 <td align="left">12.4-1.0.0.1</td>
   193 <td style="text-align: left;">12.4-1.0.0.1</td>
   192 </tr>
   194 </tr>
   193 <tr class="even">
   195 <tr class="even">
   194 <td align="left">developer/solarisstudio-124/studio-zhCN</td>
   196 <td style="text-align: left;">developer/solarisstudio-124/studio-zhCN</td>
   195 <td align="left">12.4-1.0.0.1</td>
   197 <td style="text-align: left;">12.4-1.0.0.1</td>
   196 </tr>
   198 </tr>
   197 </tbody>
   199 </tbody>
   198 </table>
   200 </table>
   199 <p>In particular backend 12.4-1.0.6.0 contains a critical patch for the sparc version.</p>
   201 <p>In particular backend 12.4-1.0.6.0 contains a critical patch for the sparc version.</p>
   200 <p>Place the <code>bin</code> directory in <code>PATH</code>.</p>
   202 <p>Place the <code>bin</code> directory in <code>PATH</code>.</p>
   209 <p>The OpenJDK build requires CYGWIN version 1.7.16 or newer. Information about CYGWIN can be obtained from the CYGWIN website at <a href="http://www.cygwin.com">www.cygwin.com</a>.</p>
   211 <p>The OpenJDK build requires CYGWIN version 1.7.16 or newer. Information about CYGWIN can be obtained from the CYGWIN website at <a href="http://www.cygwin.com">www.cygwin.com</a>.</p>
   210 <p>By default CYGWIN doesn't install all the tools required for building the OpenJDK. Along with the default installation, you need to install the following tools.</p>
   212 <p>By default CYGWIN doesn't install all the tools required for building the OpenJDK. Along with the default installation, you need to install the following tools.</p>
   211 <table>
   213 <table>
   212 <thead>
   214 <thead>
   213 <tr class="header">
   215 <tr class="header">
   214 <th align="left">Binary Name</th>
   216 <th style="text-align: left;">Binary Name</th>
   215 <th align="left">Category</th>
   217 <th style="text-align: left;">Category</th>
   216 <th align="left">Package</th>
   218 <th style="text-align: left;">Package</th>
   217 <th align="left">Description</th>
   219 <th style="text-align: left;">Description</th>
   218 </tr>
   220 </tr>
   219 </thead>
   221 </thead>
   220 <tbody>
   222 <tbody>
   221 <tr class="odd">
   223 <tr class="odd">
   222 <td align="left">ar.exe</td>
   224 <td style="text-align: left;">ar.exe</td>
   223 <td align="left">Devel</td>
   225 <td style="text-align: left;">Devel</td>
   224 <td align="left">binutils</td>
   226 <td style="text-align: left;">binutils</td>
   225 <td align="left">The GNU assembler, linker and binary utilities</td>
   227 <td style="text-align: left;">The GNU assembler, linker and binary utilities</td>
   226 </tr>
   228 </tr>
   227 <tr class="even">
   229 <tr class="even">
   228 <td align="left">make.exe</td>
   230 <td style="text-align: left;">make.exe</td>
   229 <td align="left">Devel</td>
   231 <td style="text-align: left;">Devel</td>
   230 <td align="left">make</td>
   232 <td style="text-align: left;">make</td>
   231 <td align="left">The GNU version of the 'make' utility built for CYGWIN</td>
   233 <td style="text-align: left;">The GNU version of the 'make' utility built for CYGWIN</td>
   232 </tr>
   234 </tr>
   233 <tr class="odd">
   235 <tr class="odd">
   234 <td align="left">m4.exe</td>
   236 <td style="text-align: left;">m4.exe</td>
   235 <td align="left">Interpreters</td>
   237 <td style="text-align: left;">Interpreters</td>
   236 <td align="left">m4</td>
   238 <td style="text-align: left;">m4</td>
   237 <td align="left">GNU implementation of the traditional Unix macro processor</td>
   239 <td style="text-align: left;">GNU implementation of the traditional Unix macro processor</td>
   238 </tr>
   240 </tr>
   239 <tr class="even">
   241 <tr class="even">
   240 <td align="left">cpio.exe</td>
   242 <td style="text-align: left;">cpio.exe</td>
   241 <td align="left">Utils</td>
   243 <td style="text-align: left;">Utils</td>
   242 <td align="left">cpio</td>
   244 <td style="text-align: left;">cpio</td>
   243 <td align="left">A program to manage archives of files</td>
   245 <td style="text-align: left;">A program to manage archives of files</td>
   244 </tr>
   246 </tr>
   245 <tr class="odd">
   247 <tr class="odd">
   246 <td align="left">gawk.exe</td>
   248 <td style="text-align: left;">gawk.exe</td>
   247 <td align="left">Utils</td>
   249 <td style="text-align: left;">Utils</td>
   248 <td align="left">awk</td>
   250 <td style="text-align: left;">awk</td>
   249 <td align="left">Pattern-directed scanning and processing language</td>
   251 <td style="text-align: left;">Pattern-directed scanning and processing language</td>
   250 </tr>
   252 </tr>
   251 <tr class="even">
   253 <tr class="even">
   252 <td align="left">file.exe</td>
   254 <td style="text-align: left;">file.exe</td>
   253 <td align="left">Utils</td>
   255 <td style="text-align: left;">Utils</td>
   254 <td align="left">file</td>
   256 <td style="text-align: left;">file</td>
   255 <td align="left">Determines file type using 'magic' numbers</td>
   257 <td style="text-align: left;">Determines file type using 'magic' numbers</td>
   256 </tr>
   258 </tr>
   257 <tr class="odd">
   259 <tr class="odd">
   258 <td align="left">zip.exe</td>
   260 <td style="text-align: left;">zip.exe</td>
   259 <td align="left">Archive</td>
   261 <td style="text-align: left;">Archive</td>
   260 <td align="left">zip</td>
   262 <td style="text-align: left;">zip</td>
   261 <td align="left">Package and compress (archive) files</td>
   263 <td style="text-align: left;">Package and compress (archive) files</td>
   262 </tr>
   264 </tr>
   263 <tr class="even">
   265 <tr class="even">
   264 <td align="left">unzip.exe</td>
   266 <td style="text-align: left;">unzip.exe</td>
   265 <td align="left">Archive</td>
   267 <td style="text-align: left;">Archive</td>
   266 <td align="left">unzip</td>
   268 <td style="text-align: left;">unzip</td>
   267 <td align="left">Extract compressed files in a ZIP archive</td>
   269 <td style="text-align: left;">Extract compressed files in a ZIP archive</td>
   268 </tr>
   270 </tr>
   269 <tr class="odd">
   271 <tr class="odd">
   270 <td align="left">free.exe</td>
   272 <td style="text-align: left;">free.exe</td>
   271 <td align="left">System</td>
   273 <td style="text-align: left;">System</td>
   272 <td align="left">procps</td>
   274 <td style="text-align: left;">procps</td>
   273 <td align="left">Display amount of free and used memory in the system</td>
   275 <td style="text-align: left;">Display amount of free and used memory in the system</td>
   274 </tr>
   276 </tr>
   275 </tbody>
   277 </tbody>
   276 </table>
   278 </table>
   277 <p>Note that the CYGWIN software can conflict with other non-CYGWIN software on your Windows system. CYGWIN provides a <a href="http://cygwin.com/faq/faq.using.html">FAQ</a> for known issues and problems, of particular interest is the section on <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda">BLODA (applications that interfere with CYGWIN)</a>.</p>
   279 <p>Note that the CYGWIN software can conflict with other non-CYGWIN software on your Windows system. CYGWIN provides a <a href="http://cygwin.com/faq/faq.using.html">FAQ</a> for known issues and problems, of particular interest is the section on <a href="http://cygwin.com/faq/faq.using.html#faq.using.bloda">BLODA (applications that interfere with CYGWIN)</a>.</p>
   278 <h6 id="mingwmsys">MinGW/MSYS</h6>
   280 <h6 id="mingwmsys">MinGW/MSYS</h6>
   559 This is caused by a missing libstdc++.a library. This is installed as part of a specific package (e.g. libstdc++.so.devel.386). By default some 64-bit Linux versions (e.g. Fedora) only install the 64-bit version of the libstdc++ package. Various parts of the JDK build require a static link of the C++ runtime libraries to allow for maximum portability of the built images.</p></li>
   561 This is caused by a missing libstdc++.a library. This is installed as part of a specific package (e.g. libstdc++.so.devel.386). By default some 64-bit Linux versions (e.g. Fedora) only install the 64-bit version of the libstdc++ package. Various parts of the JDK build require a static link of the C++ runtime libraries to allow for maximum portability of the built images.</p></li>
   560 <li><p><strong>Linux Error Message: <code>cannot restore segment prot after reloc</code></strong><br />
   562 <li><p><strong>Linux Error Message: <code>cannot restore segment prot after reloc</code></strong><br />
   561 This is probably an issue with SELinux (See <a href="http://en.wikipedia.org/wiki/SELinux">SELinux on Wikipedia</a>). Parts of the VM is built without the <code>-fPIC</code> for performance reasons.</p></li>
   563 This is probably an issue with SELinux (See <a href="http://en.wikipedia.org/wiki/SELinux">SELinux on Wikipedia</a>). Parts of the VM is built without the <code>-fPIC</code> for performance reasons.</p></li>
   562 </ul>
   564 </ul>
   563 <p>To completely disable SELinux:</p>
   565 <p>To completely disable SELinux:</p>
   564 <ol style="list-style-type: decimal">
   566 <ol type="1">
   565 <li><code>$ su root</code></li>
   567 <li><code>$ su root</code></li>
   566 <li><code># system-config-securitylevel</code></li>
   568 <li><code># system-config-securitylevel</code></li>
   567 <li><code>In the window that appears, select the SELinux tab</code></li>
   569 <li><code>In the window that appears, select the SELinux tab</code></li>
   568 <li><code>Disable SELinux</code></li>
   570 <li><code>Disable SELinux</code></li>
   569 </ol>
   571 </ol>
   570 <p>Alternatively, instead of completely disabling it you could disable just this one check.</p>
   572 <p>Alternatively, instead of completely disabling it you could disable just this one check.</p>
   571 <ol style="list-style-type: decimal">
   573 <ol type="1">
   572 <li>Select System-&gt;Administration-&gt;SELinux Management</li>
   574 <li>Select System-&gt;Administration-&gt;SELinux Management</li>
   573 <li>In the SELinux Management Tool which appears, select &quot;Boolean&quot; from the menu on the left</li>
   575 <li>In the SELinux Management Tool which appears, select &quot;Boolean&quot; from the menu on the left</li>
   574 <li>Expand the &quot;Memory Protection&quot; group</li>
   576 <li>Expand the &quot;Memory Protection&quot; group</li>
   575 <li>Check the first item, labeled &quot;Allow all unconfined executables to use libraries requiring text relocation ...&quot;</li>
   577 <li>Check the first item, labeled &quot;Allow all unconfined executables to use libraries requiring text relocation ...&quot;</li>
   576 </ol>
   578 </ol>
   614 <p>Compilation problems with newer or different C/C++ compilers is a common problem. Similarly, compilation problems related to changes to the <code>/usr/include</code> or system header files is also a common problem with older, newer, or unreleased OS versions. Please report these types of problems as bugs so that they can be dealt with accordingly.</p>
   616 <p>Compilation problems with newer or different C/C++ compilers is a common problem. Similarly, compilation problems related to changes to the <code>/usr/include</code> or system header files is also a common problem with older, newer, or unreleased OS versions. Please report these types of problems as bugs so that they can be dealt with accordingly.</p>
   615 <p>Bootstrap JDK: JDK 8</p>
   617 <p>Bootstrap JDK: JDK 8</p>
   616 <table>
   618 <table>
   617 <thead>
   619 <thead>
   618 <tr class="header">
   620 <tr class="header">
   619 <th align="left">Base OS and Architecture</th>
   621 <th style="text-align: left;">Base OS and Architecture</th>
   620 <th align="left">OS</th>
   622 <th style="text-align: left;">OS</th>
   621 <th align="left">C/C++ Compiler</th>
   623 <th style="text-align: left;">C/C++ Compiler</th>
   622 <th align="left">Processors</th>
   624 <th style="text-align: left;">Processors</th>
   623 <th align="left">RAM Minimum</th>
   625 <th style="text-align: left;">RAM Minimum</th>
   624 <th align="left">DISK Needs</th>
   626 <th style="text-align: left;">DISK Needs</th>
   625 </tr>
   627 </tr>
   626 </thead>
   628 </thead>
   627 <tbody>
   629 <tbody>
   628 <tr class="odd">
   630 <tr class="odd">
   629 <td align="left">Linux X86 (32-bit) and X64 (64-bit)</td>
   631 <td style="text-align: left;">Linux X86 (32-bit) and X64 (64-bit)</td>
   630 <td align="left">Oracle Enterprise Linux 6.4</td>
   632 <td style="text-align: left;">Oracle Enterprise Linux 6.4</td>
   631 <td align="left">gcc 4.9.2</td>
   633 <td style="text-align: left;">gcc 4.9.2</td>
   632 <td align="left">2 or more</td>
   634 <td style="text-align: left;">2 or more</td>
   633 <td align="left">1 GB</td>
   635 <td style="text-align: left;">1 GB</td>
   634 <td align="left">6 GB</td>
   636 <td style="text-align: left;">6 GB</td>
   635 </tr>
   637 </tr>
   636 <tr class="even">
   638 <tr class="even">
   637 <td align="left">Solaris SPARCV9 (64-bit)</td>
   639 <td style="text-align: left;">Solaris SPARCV9 (64-bit)</td>
   638 <td align="left">Solaris 11 Update 1</td>
   640 <td style="text-align: left;">Solaris 11 Update 1</td>
   639 <td align="left">Studio 12 Update 4 + patches</td>
   641 <td style="text-align: left;">Studio 12 Update 4 + patches</td>
   640 <td align="left">4 or more</td>
   642 <td style="text-align: left;">4 or more</td>
   641 <td align="left">4 GB</td>
   643 <td style="text-align: left;">4 GB</td>
   642 <td align="left">8 GB</td>
   644 <td style="text-align: left;">8 GB</td>
   643 </tr>
   645 </tr>
   644 <tr class="odd">
   646 <tr class="odd">
   645 <td align="left">Solaris X64 (64-bit)</td>
   647 <td style="text-align: left;">Solaris X64 (64-bit)</td>
   646 <td align="left">Solaris 11 Update 1</td>
   648 <td style="text-align: left;">Solaris 11 Update 1</td>
   647 <td align="left">Studio 12 Update 4 + patches</td>
   649 <td style="text-align: left;">Studio 12 Update 4 + patches</td>
   648 <td align="left">4 or more</td>
   650 <td style="text-align: left;">4 or more</td>
   649 <td align="left">4 GB</td>
   651 <td style="text-align: left;">4 GB</td>
   650 <td align="left">8 GB</td>
   652 <td style="text-align: left;">8 GB</td>
   651 </tr>
   653 </tr>
   652 <tr class="even">
   654 <tr class="even">
   653 <td align="left">Windows X86 (32-bit)</td>
   655 <td style="text-align: left;">Windows X86 (32-bit)</td>
   654 <td align="left">Windows Server 2012 R2 x64</td>
   656 <td style="text-align: left;">Windows Server 2012 R2 x64</td>
   655 <td align="left">Microsoft Visual Studio C++ 2013 Professional Edition</td>
   657 <td style="text-align: left;">Microsoft Visual Studio C++ 2013 Professional Edition</td>
   656 <td align="left">2 or more</td>
   658 <td style="text-align: left;">2 or more</td>
   657 <td align="left">2 GB</td>
   659 <td style="text-align: left;">2 GB</td>
   658 <td align="left">6 GB</td>
   660 <td style="text-align: left;">6 GB</td>
   659 </tr>
   661 </tr>
   660 <tr class="odd">
   662 <tr class="odd">
   661 <td align="left">Windows X64 (64-bit)</td>
   663 <td style="text-align: left;">Windows X64 (64-bit)</td>
   662 <td align="left">Windows Server 2012 R2 x64</td>
   664 <td style="text-align: left;">Windows Server 2012 R2 x64</td>
   663 <td align="left">Microsoft Visual Studio C++ 2013 Professional Edition</td>
   665 <td style="text-align: left;">Microsoft Visual Studio C++ 2013 Professional Edition</td>
   664 <td align="left">2 or more</td>
   666 <td style="text-align: left;">2 or more</td>
   665 <td align="left">2 GB</td>
   667 <td style="text-align: left;">2 GB</td>
   666 <td align="left">6 GB</td>
   668 <td style="text-align: left;">6 GB</td>
   667 </tr>
   669 </tr>
   668 <tr class="even">
   670 <tr class="even">
   669 <td align="left">Mac OS X X64 (64-bit)</td>
   671 <td style="text-align: left;">Mac OS X X64 (64-bit)</td>
   670 <td align="left">Mac OS X 10.9 &quot;Mavericks&quot;</td>
   672 <td style="text-align: left;">Mac OS X 10.9 &quot;Mavericks&quot;</td>
   671 <td align="left">Xcode 6.3 or newer</td>
   673 <td style="text-align: left;">Xcode 6.3 or newer</td>
   672 <td align="left">2 or more</td>
   674 <td style="text-align: left;">2 or more</td>
   673 <td align="left">4 GB</td>
   675 <td style="text-align: left;">4 GB</td>
   674 <td align="left">6 GB</td>
   676 <td style="text-align: left;">6 GB</td>
   675 </tr>
   677 </tr>
   676 </tbody>
   678 </tbody>
   677 </table>
   679 </table>
   678 <hr />
   680 <hr />
   679 <h3 id="specific-developer-build-environments">Specific Developer Build Environments</h3>
   681 <h3 id="specific-developer-build-environments">Specific Developer Build Environments</h3>