<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
-->
<!-- Generated by Apache Maven Doxia at 2019-01-16 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<title>log4cxx -
		Building Apache log4cxx - Apache log4cxx</title>
		<link rel="stylesheet" href="../css/bootstrap.min.css" type="text/css" />
		<link rel="stylesheet" href="../css/site.css" type="text/css" />
		<script type="text/javascript" src="../js/jquery.min.js"></script>
		<script type="text/javascript" src="../js/bootstrap.min.js"></script>
		<script type="text/javascript" src="../js/prettify.min.js"></script>
		<script type="text/javascript" src="../js/site.js"></script>
		<meta name="Date-Revision-yyyymmdd" content="20190116" />
		<meta http-equiv="Content-Language" content="en" />

				</head>
	<body class="composite">
		<a href="https://logging.apache.org/">
			<img class="logo-left" src="../images/logos/ls-logo.jpg" alt="Apache logging services logo" />
		</a>
		<img class="logo-right" src="../images/logos/logo.png" alt="Apache log4j logo" />
		<div class="clear"></div>

		<div class="navbar">
			<div class="navbar-inner">
				<div class="container-fluid">
					<a class="brand" href="http://logging.apache.org/log4cxx">Apache log4cxx &#8482;</a>
						<ul class="nav">
						<li>


				<a href="https://wiki.apache.org/logging" class="external" target="_blank" title="Logging Wiki">Logging Wiki</a>
			</li>
					<li>


				<a href="https://www.apache.org/" class="external" target="_blank" title="Apache">Apache</a>
			</li>
					<li>


				<a href="https://logging.apache.org/" class="external" target="_blank" title="Logging Services">Logging Services</a>
			</li>
					<li>


				<a href="https://github.com/apache/logging-log4cxx" class="external" target="_blank" title="GitHub">GitHub</a>
			</li>
		</ul>

					<div class="pull-right">


						<span id="publishDate">Last Published: 2019-01-16</span>
							<span class="divider">|</span> <span id="projectVersion">Version: 0.10.0</span>
											</div>
				</div>
			</div>
		</div>

		<div class="container-fluid">
			<table class="layout-table">
				<tr>
					<td class="sidebar">
						<div class="well sidebar-nav">
										<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-home"></i>About</li>
																						<li class="none">
									<a href="../index.html" title="What is log4cxx?">What is log4cxx?</a>
					</li>
 																<li class="none">
									<a href="../project-info.html" title="Project Information">Project Information</a>
					</li>
 																<li class="none">
									<a href="../project-reports.html" title="Generated Reports">Generated Reports</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-book"></i>Usage</li>
																						<li class="none">
									<a href="../usage.html" title="How to use log4cxx?">How to use log4cxx?</a>
					</li>
 																<li class="none">
									<a href="../apidocs/index.html" title="API Documentation">API Documentation</a>
					</li>
 																<li class="none">
									<a href="../faq.html" title="FAQ">FAQ</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-cog"></i>Get</li>
																						<li class="none">
									<a href="../download.html" title="Download">Download</a>
					</li>
 																<li class="none">
									<a href="../changes-report.html" title="Changes">Changes</a>
					</li>
 																<li class="none">
									<a href="../license.html" title="License">License</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-pencil"></i>Community</li>
																						<li class="none">
									<a href="../mail-lists.html" title="Mailing Lists">Mailing Lists</a>
					</li>
 																<li class="none">
									<a href="../issue-tracking.html" title="Issue Tracking">Issue Tracking</a>
					</li>
 																<li class="none">


				<a href="http://wiki.apache.org/logging-log4cxx" class="external" target="_blank" title="Wiki">Wiki</a>
					</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-pencil"></i>Development</li>
																						<li class="none">
									<a href="../source-repository.html" title="Repository">Repository</a>
					</li>
 																<li class="none">
									<a href="../dependencies.html" title="Dependencies">Dependencies</a>
					</li>
 																																																																													<li class="expanded active">
									<a href="../building/index.html" title="Building">Building</a>
										<ul>
																			<li class="none">
									<a href="../building/autotools.html" title="autotools">autotools</a>
					</li>
 																				<li class="none">
									<a href="../building/ant.html" title="Apache Ant">Apache Ant</a>
					</li>
 																				<li class="none">
									<a href="../building/maven.html" title="Apache Maven 2">Apache Maven 2</a>
					</li>
 																				<li class="none">
									<a href="../building/vstudio.html" title="Microsoft Visual Studio">Microsoft Visual Studio</a>
					</li>
 																				<li class="none">
									<a href="../building/xcode.html" title="Apple Xcode">Apple Xcode</a>
					</li>
 										</ul>
							</li>
 								</ul>
			<ul class="nav nav-list">
		 											 <li class="nav-header"><i class="icon-info-sign"></i>Apache</li>
																						<li class="none">


				<a href="http://www.apache.org" class="external" target="_blank" title="Home">Home</a>
					</li>
 																<li class="none">


				<a href="http://www.apache.org/foundation/sponsorship.html" class="external" target="_blank" title="Sponsorship">Sponsorship</a>
					</li>
 																<li class="none">


				<a href="http://www.apache.org/foundation/thanks.html" class="external" target="_blank" title="Thanks">Thanks</a>
					</li>
 																<li class="none">


				<a href="http://www.apachecon.com" class="external" target="_blank" title="Conferences">Conferences</a>
					</li>
 								</ul>
							</div>
						<div id="poweredBy">
															<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
				<img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
			</a>
									</div>
					</td>
					<td class="content">
						<!-- Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License. -->

		<div class="section">
<h2>Building Apache log4cxx<a name="Building_Apache_log4cxx"></a></h2>

<p>
				The project supports different build tools on different platforms, have a look at
				the menu to find the platform you need. If your environment is not covered already,
				feel free to ask about it on one of the <a href="../mail-lists.html">Mailing Lists</a>
				or leave a bug in our <a href="../issue-tracking.html">Issue Tracker</a>. In this
				case it would be very helpful of course if you could already provide some patches
				to support your environment or at least provide some technical details about the
				build tools, compiler etc. you use.
			</p>
		</div>


<div class="section">
<h2>Covered by the team<a name="Covered_by_the_team"></a></h2>

<p>
				The following table provides an overview about the environments some of the team
				members have access to and therefore normally should work out of the box or at
				least were used sometimes in the past. This list by no means tells something about
				how good the support on each platform is, it's just a guide.
			</p>


<table border="0" class="bodyTable"><caption>Environments in use</caption>

				<thead>

<tr class="a">

<th id="os">OS</th>

<th id="os_x86_x64">x86 vs. x64</th>

<th id="environment">Environment</th>

<th id="compiler">Compiler</th>

<th id="compiler_x86_x64">x86 vs. x64</th>
					</tr>
				</thead>
				<tbody>
					<!-- Windows -->

<tr class="b">

<td headers="os" rowspan="9">
							Windows 7
						</td>

<td headers="os_x86_x64" rowspan="9">
							x64
						</td>

<td headers="environment" rowspan="6">
							Win32
						</td>

<td headers="compiler">
							MS Visual Studio 2008
						</td>

<td headers="compiler_x86_x64" rowspan="5">
							both
						</td>
					</tr>

<tr class="a">

<td headers="compiler">MS Visual Studio 2010 (Pro)</td>
					</tr>

<tr class="b">

<td headers="compiler">MS Visual Studio 2010 (Express)</td>
					</tr>

<tr class="a">

<td headers="compiler">MS Visual Studio 2012</td>
					</tr>

<tr class="b">

<td headers="compiler">MS Visual Studio 2013 (Express)</td>
					</tr>

<tr class="a">

<td headers="compiler">Embarcadero C++ Builder XE 4</td>

<td headers="compiler_x86_x64">x86</td>
					</tr>

<tr class="b">

<td headers="environment" rowspan="2">
							MinGW
						</td>

<td headers="compiler">
							gcc 4.5.4
						</td>

<td headers="compiler_x86_x64" rowspan="3">
							both
						</td>
					</tr>

<tr class="a">

<td headers="compiler">gcc 4.6.4</td>
					</tr>

<tr class="b">

<td headers="environment">Cygwin</td>

<td headers="compiler">gcc 4.8.2</td>
					</tr>
					<!-- Linux -->

<tr class="a">

<td headers="os" rowspan="2">
							Debian
						</td>

<td headers="os_x86_x64" rowspan="2">
							x86
						</td>

<td headers="environment" rowspan="11">
							Posix
						</td>

<td headers="compiler">
							gcc
						</td>

<td headers="compiler_x86_x64" rowspan="2">
							x86
						</td>
					</tr>

<tr class="b">

<td headers="compiler">clang</td>
					</tr>

<tr class="a">

<td headers="os" rowspan="7">
							Ubuntu and Scientific Linux
						</td>

<td headers="os_x86_x64" rowspan="9">
							x64
						</td>

<td headers="compiler">
							gcc 4.5
						</td>

<td headers="compiler_x86_x64" rowspan="8">
							both
						</td>
					</tr>

<tr class="b">

<td headers="compiler">gcc 4.6</td>
					</tr>

<tr class="a">

<td headers="compiler">gcc 4.7</td>
					</tr>

<tr class="b">

<td headers="compiler">gcc 4.8</td>
					</tr>

<tr class="a">

<td headers="compiler">Intel 11.1</td>
					</tr>

<tr class="b">

<td headers="compiler">Intel 12.1</td>
					</tr>

<tr class="a">

<td headers="compiler">Intel 13.1</td>
					</tr>

<tr class="b">

<td headers="os">Red Hat</td>

<td headers="compiler">gcc</td>
					</tr>
					<!-- Mac OS X -->

<tr class="a">

<td headers="os">Mac OS X 10.9 Mavericks</td>

<td headers="compiler">Xcode 5.0.2</td>

<td headers="compiler_x86_x64">x64</td>
					</tr>
				</tbody>
			</table>
		</div>


					</td>
				</tr>
			</table>
		</div>

		<div class="footer">
							<p>Copyright © 2003-2019 <a class="external" href="http://www.apache.org">Apache Software Foundation</a>. All Rights Reserved.</p>
				<p>Apache Logging, Apache Log4j, Log4j, Apache, the Apache feather logo, and the Apache Logging project logo are trademarks of The Apache Software Foundation.</p>
				<p>Site powered by <a class="external" href="http://getbootstrap.com/">Twitter Bootstrap</a>. Icons from <a class="external" href="http://glyphicons.com/">Glyphicons Free</a>.</p>
		</div>
	</body>
</html>