<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>WiredRevolution.com &#187; glibc</title>
	<atom:link href="http://www.wiredrevolution.com/tag/glibc/feed" rel="self" type="application/rss+xml" />
	<link>http://www.wiredrevolution.com</link>
	<description>A Bit of Linux Wisdom</description>
	<lastBuildDate>Wed, 18 Jan 2012 22:45:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>Install Linux development man pages in Ubuntu</title>
		<link>http://www.wiredrevolution.com/ubuntu/install-linux-development-man-pages-in-ubuntu?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=install-linux-development-man-pages-in-ubuntu</link>
		<comments>http://www.wiredrevolution.com/ubuntu/install-linux-development-man-pages-in-ubuntu#comments</comments>
		<pubDate>Wed, 13 May 2009 14:53:15 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[glibc]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[GNU/Linux]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[libc]]></category>
		<category><![CDATA[man]]></category>
		<category><![CDATA[man pages]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[posix]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[system administration]]></category>

		<guid isPermaLink="false">http://www.wiredrevolution.com/?p=1127</guid>
		<description><![CDATA[<img src="http://www.wiredrevolution.com/wp-content/uploads/ubuntu_icon.png" width="80" height="78" alt="" title="ubuntu" /><br/>By default Ubuntu doesn&#8217;t install the manual pages used for Linux software development which is an invaluable reference for any system developer. These man pages describe the Linux programming interface including Linux system calls as well as system library calls. To install these man pages simply install the manpages-dev package. $ sudo apt-get install manpages-dev [...]


Related posts<ol><li><a href='http://www.wiredrevolution.com/ubuntu/install-boxee-on-64-bit-ubuntu-910-karmic' rel='bookmark' title='Permanent Link: Install Boxee on 64-bit Ubuntu 9.10 Karmic'>Install Boxee on 64-bit Ubuntu 9.10 Karmic</a></li>
<li><a href='http://www.wiredrevolution.com/ubuntu/install-google-earth-in-ubuntu' rel='bookmark' title='Permanent Link: Install Google Earth in Ubuntu'>Install Google Earth in Ubuntu</a></li>
<li><a href='http://www.wiredrevolution.com/ubuntu/install-gnome-shell-in-ubuntu-10-10-maverick' rel='bookmark' title='Permanent Link: Install GNOME Shell in Ubuntu 10.10 Maverick'>Install GNOME Shell in Ubuntu 10.10 Maverick</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<img src="http://www.wiredrevolution.com/wp-content/uploads/ubuntu_icon.png" width="80" height="78" alt="" title="ubuntu" /><br/><p>By default Ubuntu doesn&#8217;t install the manual pages used for Linux software development which is an invaluable reference for any system developer.  These man pages describe the Linux programming interface including Linux system calls as well as system library calls.</p>
<p>To install these man pages simply install the <strong>manpages-dev</strong> package.</p>
<pre>
$ sudo apt-get install manpages-dev
</pre>
<p>You can also install the POSIX specific interfaces by installing the <strong>manpages-posix-dev</strong> package.</p>
<pre>
$ sudo apt-get install manpages-posix-dev
</pre>


<p>Related posts<ol><li><a href='http://www.wiredrevolution.com/ubuntu/install-boxee-on-64-bit-ubuntu-910-karmic' rel='bookmark' title='Permanent Link: Install Boxee on 64-bit Ubuntu 9.10 Karmic'>Install Boxee on 64-bit Ubuntu 9.10 Karmic</a></li>
<li><a href='http://www.wiredrevolution.com/ubuntu/install-google-earth-in-ubuntu' rel='bookmark' title='Permanent Link: Install Google Earth in Ubuntu'>Install Google Earth in Ubuntu</a></li>
<li><a href='http://www.wiredrevolution.com/ubuntu/install-gnome-shell-in-ubuntu-10-10-maverick' rel='bookmark' title='Permanent Link: Install GNOME Shell in Ubuntu 10.10 Maverick'>Install GNOME Shell in Ubuntu 10.10 Maverick</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.wiredrevolution.com/ubuntu/install-linux-development-man-pages-in-ubuntu/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Select threading implementation using LD_ASSUME_KERNEL</title>
		<link>http://www.wiredrevolution.com/system-administration/select-threading-implementation-using-ld_assume_kernel?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=select-threading-implementation-using-ld_assume_kernel</link>
		<comments>http://www.wiredrevolution.com/system-administration/select-threading-implementation-using-ld_assume_kernel#comments</comments>
		<pubDate>Mon, 13 Oct 2008 12:37:09 +0000</pubDate>
		<dc:creator>Ryan</dc:creator>
				<category><![CDATA[system administration]]></category>
		<category><![CDATA[ABI]]></category>
		<category><![CDATA[environment variable]]></category>
		<category><![CDATA[glibc]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[LD_ASSUME_KERNEL]]></category>
		<category><![CDATA[LinuxThreads]]></category>
		<category><![CDATA[NPTL]]></category>
		<category><![CDATA[threads]]></category>

		<guid isPermaLink="false">http://www.wiredrevolution.com/?p=273</guid>
		<description><![CDATA[<img src="http://www.wiredrevolution.com/wp-content/uploads/sysadmin_icon.png" width="80" height="94" alt="" title="system administration" /><br/>For backwards compatibility, many Linux distributions support both the older LinuxThreads implementation as well as the newer Native POSIX Thread Library (NPTL). By setting the LD_ASSUME_KERNEL environment variable you can tell the dynamic linker to assume that it is running on top of a particular kernel version. This will override the dynamic linker&#8217;s default choice [...]


Related posts<ol><li><a href='http://www.wiredrevolution.com/system-administration/how-to-correctly-use-ld_library_path' rel='bookmark' title='Permanent Link: How to correctly use LD_LIBRARY_PATH'>How to correctly use LD_LIBRARY_PATH</a></li>
<li><a href='http://www.wiredrevolution.com/commands/view-dynamic-library-dependencies-with-ldd' rel='bookmark' title='Permanent Link: View dynamic library dependencies with ldd'>View dynamic library dependencies with ldd</a></li>
<li><a href='http://www.wiredrevolution.com/virtualbox/virtualbox-4-0-upgrade-and-the-oracle-vm-virtualbox-extension-pack' rel='bookmark' title='Permanent Link: VirtualBox 4.0 upgrade and the Oracle VM VirtualBox Extension Pack'>VirtualBox 4.0 upgrade and the Oracle VM VirtualBox Extension Pack</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<img src="http://www.wiredrevolution.com/wp-content/uploads/sysadmin_icon.png" width="80" height="94" alt="" title="system administration" /><br/><p>For backwards compatibility, many Linux distributions support both the older LinuxThreads implementation as well as the newer Native POSIX Thread Library (NPTL). By setting the LD_ASSUME_KERNEL environment variable you can tell the dynamic linker to assume that it is running on top of a particular kernel version.  This will override the dynamic linker&#8217;s default choice of threading implementation (usually NPTL) and force the use of the older LinuxThreads implementation at run-time. </p>
<p>Many 32-bit systems have 3 separate glibc versions which have support for a minimum OS Application Binary Interface (ABI), designated by a kernel version and offer support for a particular thread implementation.</p>
<p><strong>/lib/tls/libc.so.6</strong> </p>
<ul>
<li>minimum ABI = 2.4.20</li>
<li>Native POSIX Thread Library (NPTL)</li>
</ul>
<p><strong>/lib/i686/libc.so.6</strong> </p>
<ul>
<li>minimum ABI = 2.4.1</li>
<li>standard LinuxThreads</li>
</ul>
<p><strong>/lib/libc.so.6</strong> </p>
<ul>
<li>minimum ABI = 2.2.5</li>
<li>early LinuxThreads code which had fixed size threads</li>
</ul>
<p>It is worth noting that 64-bit systems do not support the older 2.2.5 LinuxThreads implementation.</p>
<p>You can run the following commands to see what thread implementations are supported by each separate glibc library.</p>
<pre>
$ /lib/tls/libc.so.6 | grep [T|t]hreads
</pre>
<pre>
	Native POSIX Threads Library by Ulrich Drepper
</pre>
<pre>
$ /lib/i686/libc.so.6 | grep [T|t]hreads
</pre>
<pre>
	linuxthreads-0.10 by Xavier Leroy
</pre>
<pre>
$ /lib/libc.so.6 | grep [T|t]hreads
</pre>
<pre>
	linuxthreads-0.10 by Xavier Leroy
</pre>
<p>A shared library can tell the dynamic linker which minimum OS ABI version is needed for it to successfully run. At run-time the linker will start at the most recent library path and walk backwards in this order: <strong>/lib/tls</strong>, <strong>/lib/i686</strong>, <strong>/lib</strong>.  It will either link to the first library it finds or fail and terminate the program if the minimum ABI is reached before it finds a library.</p>
<p>Setting LD_ASSUME_KERNEL below the minimum threshold ABI version of any dynamic library will cause the linker to skip that library and try to find an older implementation</p>
<p>Set the environment variable by assigning it to a specific ABI/kernel version.</p>
<pre>
$ export LD_ASSUME_KERNEL=X.Y.Z
</pre>
<p>You must be careful not to set the the ABI below 2.2.5 in your environment as all programs which require dynamic linking will probably fail to run.  Luckily you are still be able to unset or change it back.</p>
<p>It is useless to set LD_ASSUME_KERNEL for most programs as they will run correctly no matter what underlying implementation is used since the API is the same. However there are some programs that may depend on some non-conformant behavior requiring LinuxThreads, which will fail with NPTL.</p>


<p>Related posts<ol><li><a href='http://www.wiredrevolution.com/system-administration/how-to-correctly-use-ld_library_path' rel='bookmark' title='Permanent Link: How to correctly use LD_LIBRARY_PATH'>How to correctly use LD_LIBRARY_PATH</a></li>
<li><a href='http://www.wiredrevolution.com/commands/view-dynamic-library-dependencies-with-ldd' rel='bookmark' title='Permanent Link: View dynamic library dependencies with ldd'>View dynamic library dependencies with ldd</a></li>
<li><a href='http://www.wiredrevolution.com/virtualbox/virtualbox-4-0-upgrade-and-the-oracle-vm-virtualbox-extension-pack' rel='bookmark' title='Permanent Link: VirtualBox 4.0 upgrade and the Oracle VM VirtualBox Extension Pack'>VirtualBox 4.0 upgrade and the Oracle VM VirtualBox Extension Pack</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.wiredrevolution.com/system-administration/select-threading-implementation-using-ld_assume_kernel/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

