<?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>Techy Things &#187; development</title>
	<atom:link href="https://tech.yipp.ca/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>https://tech.yipp.ca</link>
	<description>Just another Yipp.ca Blogs site</description>
	<lastBuildDate>Thu, 01 May 2025 18:06:28 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.2.38</generator>
	<item>
		<title>Linux libraries 101 and distributing them with your app</title>
		<link>https://tech.yipp.ca/development/linux-libraries-101-distributing-app/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=linux-libraries-101-distributing-app</link>
		<comments>https://tech.yipp.ca/development/linux-libraries-101-distributing-app/#comments</comments>
		<pubDate>Thu, 21 Sep 2017 15:48:42 +0000</pubDate>
		<dc:creator><![CDATA[frank]]></dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://tech.yipp.ca/?p=2871</guid>
		<description><![CDATA[<p>ldd First tool to master the use of is ldd You use ldd to view the current library requirement list and where they are found it the current system. [dev@squarepants stage]$ ldd tsmuxer linux-gate.so.1 =&#62;&#46;&#46;&#46;</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/development/linux-libraries-101-distributing-app/">Linux libraries 101 and distributing them with your app</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>ldd</h2>
<p>First tool to master the use of is ldd</p>
<p>You use <strong>ldd</strong> to view the current library requirement list and where they are found it the current system.</p>
<pre>[dev@squarepants stage]$ ldd tsmuxer
 linux-gate.so.1 =&gt; (0x00426000)
 libavfilter.so.6 =&gt; /home/dev/builds/tsmuxer/ort/stage/ffmpeg/lib/libavfilter.so.6 (0x00177000)
 libavformat.so.57 =&gt; /home/dev/builds/tsmuxer/ort/stage/ffmpeg/lib/libavformat.so.57 (0x0042b000)
 libavcodec.so.57 =&gt; /home/dev/builds/tsmuxer/ort/stage/ffmpeg/lib/libavcodec.so.57 (0xf61b0000)
 libswscale.so.4 =&gt; /home/dev/builds/tsmuxer/ort/stage/ffmpeg/lib/libswscale.so.4 (0x00b93000)
 libswresample.so.2 =&gt; /home/dev/builds/tsmuxer/ort/stage/ffmpeg/lib/libswresample.so.2 (0x00a29000)
 libavutil.so.55 =&gt; /home/dev/builds/tsmuxer/ort/stage/ffmpeg/lib/libavutil.so.55 (0x0034a000)
 libpthread.so.0 =&gt; /lib/libpthread.so.0 (0x00b39000)
 libudev.so.0 =&gt; /lib/libudev.so.0 (0x00866000)
 libdl.so.2 =&gt; /lib/libdl.so.2 (0x00b32000)
 librt.so.1 =&gt; /lib/librt.so.1 (0x00b56000)
 libX11.so.6 =&gt; /usr/lib/libX11.so.6 (0x00670000)
 libXv.so.1 =&gt; /usr/lib/libXv.so.1 (0x00967000)
 libXext.so.6 =&gt; /usr/lib/libXext.so.6 (0x003c0000)
 libstdc++.so.6 =&gt; /usr/lib/libstdc++.so.6 (0x00876000)
 libm.so.6 =&gt; /lib/libm.so.6 (0x003d2000)
 libgcc_s.so.1 =&gt; /lib/libgcc_s.so.1 (0x00e55000)
 libc.so.6 =&gt; /lib/libc.so.6 (0x00c1e000)
 /lib/ld-linux.so.2 (0x00977000)
 libxcb.so.1 =&gt; /usr/lib/libxcb.so.1 (0x003fc000)
 libXau.so.6 =&gt; /usr/lib/libXau.so.6 (0x00427000)</pre>
<p>It is also useful when libraries are missing, it will tell you which.</p>
<p>Let say after deployment on the customer system you have this error.</p>
<pre><span style="color: #bd0808;">output:./tsmuxer: error while loading shared libraries: libavfilter.so.6: wrong ELF class: ELFCLASS64</span></pre>
<p>Then use <strong>ldd</strong> to check what is going on</p>
<pre>[root@localhost ~]# ldd tsmuxer
 linux-gate.so.1 =&gt; (0x002a7000)
 libavfilter.so.6 =&gt; not found
 libavformat.so.57 =&gt; not found
 libavcodec.so.57 =&gt; not found
 libswscale.so.4 =&gt; not found
 libswresample.so.2 =&gt; not found
 libavutil.so.55 =&gt; not found
 libpthread.so.0 =&gt; /root/./../lib/libpthread.so.0 (0x0024d000)
 libudev.so.0 =&gt; not found
 libdl.so.2 =&gt; /root/./../lib/libdl.so.2 (0x0085b000)
 librt.so.1 =&gt; /root/./../lib/librt.so.1 (0x00fef000)
 libX11.so.6 =&gt; /usr/lib/libX11.so.6 (0x00e39000)
 libXv.so.1 =&gt; /usr/lib/libXv.so.1 (0x00120000)
 libXext.so.6 =&gt; /usr/lib/libXext.so.6 (0x00125000)
 libstdc++.so.6 =&gt; /usr/lib/libstdc++.so.6 (0x00137000)
 libm.so.6 =&gt; /root/./../lib/libm.so.6 (0x009d3000)
 libgcc_s.so.1 =&gt; /root/./../lib/libgcc_s.so.1 (0x007ae000)
 libc.so.6 =&gt; /root/./../lib/libc.so.6 (0x002a8000)
 /lib/ld-linux.so.2 (0x00b89000)
 libxcb.so.1 =&gt; /usr/lib/libxcb.so.1 (0x00222000)
 libXau.so.6 =&gt; /usr/lib/libXau.so.6 (0x004e2000)</pre>
<h2>Fixing library issues with patchelf</h2>
<pre><span class="il">patchelf</span> --set-rpath '$ORIGIN/lib' &lt;application-binary&gt;</pre>
<p>What patchref does is edit the path that tells where to look for the libraries. It edits the binary directly. So you do this once, then redistribute that binary and the lib folder.</p>
<p>In my case I excecuted</p>
<pre>./patchelf --set-rpath '$ORIGIN/tsmuxer-lib' tsmuxer


</pre>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/development/linux-libraries-101-distributing-app/">Linux libraries 101 and distributing them with your app</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://tech.yipp.ca/development/linux-libraries-101-distributing-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free UK, Canada, USA zip and postcodes databases</title>
		<link>https://tech.yipp.ca/development/free-uk-canada-usa-zip-postcodes-databases/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=free-uk-canada-usa-zip-postcodes-databases</link>
		<comments>https://tech.yipp.ca/development/free-uk-canada-usa-zip-postcodes-databases/#comments</comments>
		<pubDate>Sat, 27 Dec 2014 15:43:36 +0000</pubDate>
		<dc:creator><![CDATA[frank]]></dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://tech.yipp.ca/?p=1372</guid>
		<description><![CDATA[<p>UK Zip code database in UK is not free. However some people put together some database in the public domain : http://www.freepostcodes.org.uk http://www.doogal.co.uk/UKPostcodes.php Canada not free USA free</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/development/free-uk-canada-usa-zip-postcodes-databases/">Free UK, Canada, USA zip and postcodes databases</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></description>
				<content:encoded><![CDATA[<h2>UK</h2>
<p>Zip code database in UK is not free. However some people put together some database in the public domain :</p>
<p>http://www.freepostcodes.org.uk<br />
<span style="font-size: 13px;">http://www.doogal.co.uk/UKPostcodes.php</span></p>
<h2>Canada</h2>
<p>not free</p>
<h2>USA</h2>
<p>free</p>
<p>The post <a rel="nofollow" href="https://tech.yipp.ca/development/free-uk-canada-usa-zip-postcodes-databases/">Free UK, Canada, USA zip and postcodes databases</a> appeared first on <a rel="nofollow" href="https://tech.yipp.ca">Techy Things</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://tech.yipp.ca/development/free-uk-canada-usa-zip-postcodes-databases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
