<!--#include file="header.html" -->

<!-- Begin Introduction section -->

<h3>Mailing List Information</h3>
Buildroot has a <a href="/lists/buildroot/">mailing list</a> for discussion and
development.  You can subscribe by visiting
<a href="http://lists.busybox.net/mailman/listinfo/buildroot">this page</a>.
Only subscribers to the Buildroot mailing list are allowed to post
to this list.
<p>
The list is also available through <a
href="http://gmane.org">Gmane</a> at <a href="http://dir.gmane.org/gmane.comp.lib.uclibc.buildroot">gmane.comp.lib.uclibc.buildroot</a>.
<p>

<h3>Search the List Archives</h3>
Please search the mailing list archives before asking questions on the mailing
list, since there is a good chance someone else has asked the same question
before.  Checking the archives is a great way to avoid annoying everyone on the
list with frequently asked questions...
<p>

<center>
<div id="cse" style="width: 100%;">Loading</div>
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
	google.load('search', '1', {language : 'en'});
	google.setOnLoadCallback(function() {
		var customSearchControl = new google.search.CustomSearchControl(
					      '009810735161915413714:3rfmqierl8s');
		customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
		var customSearchOptions = new google.search.DrawOptions();
		customSearchOptions.enableSearchboxOnly("http://google.com/cse?cx=009810735161915413714:3rfmqierl8s");
		customSearchControl.draw('cse', customSearchOptions);
	}, true);
</script>
<link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" />
</center>

<!--#include file="footer.html" -->
