<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>BEC Systems</title>
	
	<link>http://bec-systems.com/site</link>
	<description>Embedded Linux consulting.</description>
	<pubDate>Thu, 05 Nov 2009 21:28:27 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/bec-systems" type="application/rss+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Notification at the end of builds</title>
		<link>http://feedproxy.google.com/~r/bec-systems/~3/RvwjWQH4p6U/notification-at-the-end-of-builds</link>
		<comments>http://bec-systems.com/site/540/notification-at-the-end-of-builds#comments</comments>
		<pubDate>Thu, 05 Nov 2009 21:26:34 +0000</pubDate>
		<dc:creator>Cliff Brake</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[Embedded Linux]]></category>

		<category><![CDATA[OpenEmbedded]]></category>

		<guid isPermaLink="false">http://bec-systems.com/site/?p=540</guid>
		<description><![CDATA[I do quite a few OpenEmbedded project builds during the course of a week.  This process usually takes 3-5 minutes.  That is just enough time to get distracted doing something else and forget about the build until an hour later when you realize &#8212; oops, I was supposed to send out a release email once [...]]]></description>
			<content:encoded><![CDATA[<p>I do quite a few OpenEmbedded project builds during the course of a week.  This process usually takes 3-5 minutes.  That is just enough time to get distracted doing something else and forget about the build until an hour later when you realize &#8212; oops, I was supposed to send out a release email once the build was finished and uploaded.  It occured to me that it would be nice if my computer played a distinct sound at the end of the build.  With Linux this is incredibly easy:</p>
<ul>
<li>wget http://upload.wikimedia.org/wikipedia/commons/7/76/Ding_Dong_Bell.ogg</li>
<li>sudo mv Ding_Dong_Bell.ogg /usr/local/</li>
<li>sudo aptitude install cplay</li>
<li>sudo echo &#8220;cplay /usr/local/Ding_Dong_Bell.ogg&#8221; &gt; /usr/local/bin/bell</li>
<li>sudo chmod 775 /usr/local/bin/bell</li>
</ul>
<p>Now, when I have a long build, I simply do something like:</p>
<pre>bitbake my-image; bell</pre>
<p>There is probably something better than cplay that does not start a UI &#8212; any suggestions?</p>
<img src="http://feeds.feedburner.com/~r/bec-systems/~4/RvwjWQH4p6U" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bec-systems.com/site/540/notification-at-the-end-of-builds/feed</wfw:commentRss>
		<feedburner:origLink>http://bec-systems.com/site/540/notification-at-the-end-of-builds</feedburner:origLink></item>
		<item>
		<title>A quick serial logging application</title>
		<link>http://feedproxy.google.com/~r/bec-systems/~3/YQd61UkJRdE/a-quick-serial-logging-application</link>
		<comments>http://bec-systems.com/site/533/a-quick-serial-logging-application#comments</comments>
		<pubDate>Wed, 21 Oct 2009 15:56:46 +0000</pubDate>
		<dc:creator>Cliff Brake</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://bec-systems.com/site/?p=533</guid>
		<description><![CDATA[Recently when debugging a device connected to a rs485 bus, I needed a simple application to dump the raw data coming over the rs485 bus.  Minicom does all kinds of weird terminal stuff, plus it will not display binary data, so that was out.  While looking for serial analyzer programs for Linux, and pondering writing [...]]]></description>
			<content:encoded><![CDATA[<p>Recently when debugging a device connected to a rs485 bus, I needed a simple application to dump the raw data coming over the rs485 bus.  Minicom does all kinds of weird terminal stuff, plus it will not display binary data, so that was out.  While looking for serial analyzer programs for Linux, and pondering writing my own simple C application, it occurred to me to use pyserial.  With a few lines of code, I got exactly what I needed:</p>
<pre>import serial
import sys
import struct

if len(sys.argv) != 3:
    print "Usage: serial-dump.py &lt;serial port&gt; &lt;baud rate&gt;"
    sys.exit(-1)

print "Dumping data on %s" % (sys.argv[1])

ser = serial.Serial(sys.argv[1], sys.argv[2], timeout=0.3)

while(1):
    buf = ser.read(500)
    if len(buf) &gt; 0:
        print "Read %i bytes:" % (len(buf)),

        for i in buf:
            value = struct.unpack('B', i)[0]
            print "%02x" % (value),

        print ""</pre>
<p>The full source is available <a href="http://svn.bec-systems.com/pub/py-serial-dump/serial-dump.py">here</a>.  This could obviously be improved to do true blocking reads, automatically parse protocols, implement a gui, etc.  Ideas for efficiently reading data using pyserial is available in a <a href="http://bec-systems.com/site/257/tips-for-reading-a-serial-data-stream-in-python">previous post</a>.  Another example of using a scripting language for quick tasks is <a href="http://bec-systems.com/site/226/a-really-nice-hex-calculator">http://bec-systems.com/site/226/a-really-nice-hex-calculator</a>.</p>
<img src="http://feeds.feedburner.com/~r/bec-systems/~4/YQd61UkJRdE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bec-systems.com/site/533/a-quick-serial-logging-application/feed</wfw:commentRss>
		<feedburner:origLink>http://bec-systems.com/site/533/a-quick-serial-logging-application</feedburner:origLink></item>
		<item>
		<title>Apache and how to correctly use NameVirtualHost</title>
		<link>http://feedproxy.google.com/~r/bec-systems/~3/8K_dDBupQbw/apache-and-how-to-correctly-use-namevirtualhost</link>
		<comments>http://bec-systems.com/site/528/apache-and-how-to-correctly-use-namevirtualhost#comments</comments>
		<pubDate>Fri, 16 Oct 2009 17:23:02 +0000</pubDate>
		<dc:creator>Cliff Brake</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[server]]></category>

		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://bec-systems.com/site/?p=528</guid>
		<description><![CDATA[As I often get involved in server administration (SVN, git, redmine, etc setup), I deal with Apache on a regular basis.  For simple configurations, the default Ubuntu/debian config works well.  However, for a more complex setup with virtual hosts, multiple IP addresses, and SSL support, it is common to run into the following message:
mixing * [...]]]></description>
			<content:encoded><![CDATA[<p>As I often get involved in server administration (SVN, git, redmine, etc setup), I deal with Apache on a regular basis.  For simple configurations, the default Ubuntu/debian config works well.  However, for a more complex setup with virtual hosts, multiple IP addresses, and SSL support, it is common to run into the following message:</p>
<p><em>mixing * ports and non-* ports with a NameVirtualHost address is not supported, proceeding with undefined results</em></p>
<p>Googling does not return a clear explanation to this problem, so that is why I&#8217;m writing this article. The impulsive approach of randomly changing things does not get you too far &#8212; especially with the Debian/Ubuntu Apache configuration that is composed of seperate files for each virtual host.  After reading the documentation, things become clearer:</p>
<p><em>Note that the argument to the <code class="directive">&lt;VirtualHost&gt;</code> directive must       exactly match the argument to the <code class="directive">NameVirtualHost</code> directive.</em></p>
<p>And, by considering the fact that the seperate virtual host config files really just get concatenated into one big file, it makes sense that you can&#8217;t have more than one NameVirtualHost entry.  Ubuntu by default puts the NameVirtualHost in the default virtual host file, which gets soft linked to sites-enabled/000-default.  I presume the &#8216;000&#8242; means it gets loaded first.  I find it much more intuitive to put the NameVitualHost directives in the /etc/apache2/httpd.conf file.  This way it is clear that these entries are common to all virtual host entries.  So what I end up with is:</p>
<p>/etc/apache2/httpd.conf</p>
<pre>NameVirtualHost 74.208.184.45:80
NameVirtualHost 74.208.184.46:80
NameVirtualHost 74.208.184.45:443</pre>
<p>/etc/apache2/sites-available/bec-systems.com</p>
<pre>&lt;VirtualHost 74.208.184.45:80&gt;
        ServerName bec-systems.com
...</pre>
<p>/etc/apach2/sites-available/bec-systems.com.ssl</p>
<pre>&lt;VirtualHost 74.208.184.45:443&gt;
        ServerName bec-systems.com
...</pre>
<p>/etc/apach2/sites-available/svn.bec-systems.com</p>
<pre>&lt;VirtualHost 74.208.184.45:80&gt;
        ServerName svn.bec-systems.com
...</pre>
<pre></pre>
<p>/etc/apach2/sites-available/site2.com (with different IP address)</p>
<pre>&lt;VirtualHost 74.208.184.46:80&gt;
        ServerName site2.com
...</pre>
<p>Again, the points to remember are:</p>
<ol>
<li>The argument to VirtualHost must match a NameVirtualHost directive</li>
<li>the NameVirtualHost directive is common, so there should only be one entry</li>
</ol>
<img src="http://feeds.feedburner.com/~r/bec-systems/~4/8K_dDBupQbw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bec-systems.com/site/528/apache-and-how-to-correctly-use-namevirtualhost/feed</wfw:commentRss>
		<feedburner:origLink>http://bec-systems.com/site/528/apache-and-how-to-correctly-use-namevirtualhost</feedburner:origLink></item>
		<item>
		<title>Best practices for kernel development with OpenEmbedded</title>
		<link>http://feedproxy.google.com/~r/bec-systems/~3/s4EHATLsHmo/best-practices-for-kernel-development-with-openembedded</link>
		<comments>http://bec-systems.com/site/521/best-practices-for-kernel-development-with-openembedded#comments</comments>
		<pubDate>Tue, 13 Oct 2009 16:06:16 +0000</pubDate>
		<dc:creator>Cliff Brake</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[Embedded Linux]]></category>

		<category><![CDATA[Git]]></category>

		<category><![CDATA[kernel]]></category>

		<category><![CDATA[OpenEmbedded]]></category>

		<guid isPermaLink="false">http://bec-systems.com/site/?p=521</guid>
		<description><![CDATA[A common question is how do you do kernel development with OpenEmbedded?  Typically, OpenEmbedded builds a kernel by checking the source out of a git repository, or by applying patch files to a released version of the kernel.  See the many recipes for examples.  This works very well for a Linux distribution build system, but [...]]]></description>
			<content:encoded><![CDATA[<p>A common question is how do you do kernel development with OpenEmbedded?  Typically, OpenEmbedded builds a kernel by checking the source out of a git repository, or by applying patch files to a released version of the kernel.  See the <a href="http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/linux">many recipes</a> for examples.  This works very well for a Linux distribution build system, but is less than ideal for ongoing kernel development where you will have many iterations over a period of time. The OE work directory is considered transient, and should not be used for any ongoing development.  Fortunately, the kernel build system is self contained, so it is a very simple matter to reference the toolchain built by OpenEmbedded and work outside the OpenEmbedded build system.</p>
<h1>Use Git</h1>
<p>Trust me on this one, just use it!  It will make your life easier.  There is a learning curve to any powerful tool.  Another way to state this is if a tool does not do much, then it would be easy to learn.  So expect to spend a little time learning to use git.  With modern Linux kernel development, much of your time is spent integrating work that others are doing.  For example, if you are using the OMAP3 CPU, you might want to start with linux-omap branch, integrate some patches from the OE beagleboard build, merge the OMAP PM tree, and then merge some bits from the Linux-wireless tree.  This is the way embedded Linux development is done today.  Git makes it possible to have many parallel developments going at their own pace, including your own.  Even in your own development, you will find significant advantages to being able to quickly create and merge branches, revise commits, etc.  There are several <a href="http://bec-systems.com/site/tag/git">articles about git</a> on this site.</p>
<h1>Importing an OE kernel into git</h1>
<p>If you are starting with an existing OE kernel tree, then you typically need to set up an equivalent tree in your local git workspace.  Typically you just look at the recipe to see how to manually reconstruct it.  For example, lets consider the SRC_URI from the <a href="http://cgit.openembedded.org/cgit.cgi/openembedded/tree/recipes/linux/linux-palm-omap1_2.6.22-omap1.bb">palm-omap1</a> recipe:</p>
<pre><code>SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-2.6.22.tar.bz2 \
           http://www.muru.com/linux/omap/patches/patch-2.6.22-omap1.bz2;patch=1 \
	   file://defconfig"</code></pre>
<p>To set this kernel up in git, we might do the following:</p>
<ol>
<li>git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git</li>
<li>cd linux-2.6</li>
<li>git checkout -b my_branch v2.6.22</li>
<li>wge<code>t http://www.muru.com/linux/omap/patches/patch-2.6.22-omap1.bz2</code></li>
<li>bzip2 -d patch-2.6.22-omap1.bz2</li>
<li>git am patch-2.6.22-omap1</li>
</ol>
<p>If the git am fails, then you might need to add a subject and author line to the patch in the following form and then retry git am.</p>
<pre>From: Name &lt;name@company.com&gt;
Subject: omap1 patch</pre>
<p>Now when you do a git log, you will see the above patch applied.  git apply can also be used to apply patches, but I prefer git-am as it automatically handles new files and fills in the commit message and author.</p>
<h1>Setting up the toolchain</h1>
<p>Now that you have a kernel, you must set up a toolchain so you can build it.  I typically set up my kernel directory next to my OE build directory in my project space, so I can then source the following <a href="http://dev.bec-systems.com/svn/oe/scripts/setup-env">script</a> to set up the toolchain:</p>
<pre>CROSS_COMPILER_PATH=`cd ../oe/build/angstrom-2008.1/tmp/cross/armv7a/bin; pwd`
BUILD_ARCH=`uname -m`
OE_STAGING_PATH=`cd ../oe/build/angstrom-2008.1/tmp/staging/${BUILD_ARCH}-linux/usr/bin; pwd`
STAGING_KERNEL_DIR=`cd linux-2.6; pwd`
export PATH=$PATH:$CROSS_COMPILER_PATH:$OE_STAGING_PATH
export ARCH=arm
export CROSS_COMPILE=arm-angstrom-linux-gnueabi-</pre>
<p>Adjust to whatever you are building for.  Now you can simply type make.  The reason the OE_STAGING_PATH is added to the PATH in the above example is so that the uboot mkimage utility can be used directly from the OE build if your build target is make uImage.</p>
<h1>Installing modules</h1>
<p>Sometimes you need to re-install all modules on the target because you changed kernel version, etc.  Typically OE packages up all modules and adds the one you specify to the rootfs.  Because we are building the kernel outside the OE directory, OE can no longer do this.  However, its still very easy to install modules from your kernel development directory:</p>
<pre>rm -rf modules_install; INSTALL_MOD_PATH=modules_install make modules_install
rsync -av modules_install/lib/modules/2.6.22 root@192.168.1.115:/lib/modules/</pre>
<p>The first command installs the modules to a temporary directory, and the second command rsync&#8217;s the modules to your target system.</p>
<h1>Creating a kernel recipe with your changes</h1>
<p>Once you get to the point where you want to create a recipe with your changes, you can easily export a patch, or series of patches using git diff or git format-patch.  Simply add the patch files to your kernel recipe SRC_URI.  You can also teach bitbake to fetch your kernel source directly from a git repository, but I&#8217;ve generally found the patch mechanism to be adequate and easier in most cases.  As an example, you can create one large patch with all your changes that can be applied on the 2.6.22 released kernel:</p>
<pre>git diff HEAD..v2.6.22 &gt; my_kernel_changes.patch</pre>
<h1>Other ways &#8230;</h1>
<p>This is just one flow and there are many variations.  There is also a  new mechanism in OpenEmbedded called srctree that allows you to use OpenEmbedded in an external source tree.  srctree has the potential to further streamline this type of development.</p>
<p>As with any task, you want to use the tools that make sense for the task.  OpenEmbedded makes sense for building Linux distributions, but it is not a kernel development tool.  Git and the kernel build system make sense for kernel development.</p>
<img src="http://feeds.feedburner.com/~r/bec-systems/~4/s4EHATLsHmo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bec-systems.com/site/521/best-practices-for-kernel-development-with-openembedded/feed</wfw:commentRss>
		<feedburner:origLink>http://bec-systems.com/site/521/best-practices-for-kernel-development-with-openembedded</feedburner:origLink></item>
		<item>
		<title>converting digital camera movies to ogg format</title>
		<link>http://feedproxy.google.com/~r/bec-systems/~3/ZQKGMJ8xVOE/converting-digital-camera-movies-to-ogg-format</link>
		<comments>http://bec-systems.com/site/514/converting-digital-camera-movies-to-ogg-format#comments</comments>
		<pubDate>Wed, 09 Sep 2009 16:24:25 +0000</pubDate>
		<dc:creator>Cliff Brake</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://bec-systems.com/site/?p=514</guid>
		<description><![CDATA[Now that firefox (v3.5) has built in support for ogg videos, ogg is now the most convenient format for &#8220;easy to view&#8221; video files (assuming you don&#8217;t want to use a service like youtube).  Some digital cameras (like my Canon) records movies in AVI format.  I created a script that uses gstreamer to convert the [...]]]></description>
			<content:encoded><![CDATA[<p>Now that firefox (v3.5) has built in support for ogg videos, ogg is now the most convenient format for &#8220;easy to view&#8221; video files (assuming you don&#8217;t want to use a service like youtube).  Some digital cameras (like my Canon) records movies in AVI format.  I created a script that uses gstreamer to convert the AVI file to an ogg file for easy viewing.</p>
<p><a href="http://dev.bec-systems.com/svn/pub/avi_to_ogg/avi_to_ogg">http://dev.bec-systems.com/svn/pub/avi_to_ogg/avi_to_ogg</a></p>
<p>And some of the results:</p>
<p><a href="http://bec-systems.com/video/">http://bec-systems.com/video/</a></p>
<p>(hint, download firefox 3.5 to view these videos)</p>
<img src="http://feeds.feedburner.com/~r/bec-systems/~4/ZQKGMJ8xVOE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bec-systems.com/site/514/converting-digital-camera-movies-to-ogg-format/feed</wfw:commentRss>
		<feedburner:origLink>http://bec-systems.com/site/514/converting-digital-camera-movies-to-ogg-format</feedburner:origLink></item>
		<item>
		<title>Best practices for building Gtk+ applications with OpenEmbedded</title>
		<link>http://feedproxy.google.com/~r/bec-systems/~3/AY3joqZanDc/best-practices-for-building-gtk-applications-with-openembedded</link>
		<comments>http://bec-systems.com/site/509/best-practices-for-building-gtk-applications-with-openembedded#comments</comments>
		<pubDate>Tue, 08 Sep 2009 16:35:33 +0000</pubDate>
		<dc:creator>Cliff Brake</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<category><![CDATA[build]]></category>

		<category><![CDATA[Embedded Linux]]></category>

		<category><![CDATA[GTK+]]></category>

		<category><![CDATA[Linux application dev]]></category>

		<category><![CDATA[OpenEmbedded]]></category>

		<guid isPermaLink="false">http://bec-systems.com/site/?p=509</guid>
		<description><![CDATA[I recently wrote an article about best practices building Qt applications with OpenEmbedded, and it occured to me that I should write an equivalent article for Gtk+ applications.  The same points apply &#8212; put your application source in a SCM system, and put the install logic in the application source (read the above article).  The [...]]]></description>
			<content:encoded><![CDATA[<p>I recently<a href="http://bec-systems.com/site/501/best-practices-for-building-qt-applications-with-openembedded"> wrote an article about best practices building Qt applications with OpenEmbedded</a>, and it occured to me that I should write an equivalent article for Gtk+ applications.  The same points apply &#8212; put your application source in a SCM system, and put the install logic in the application source (read the above article).  The difference is that Gtk applications typically use autotools where Qt applications use qmake to build the application.  This article details how a minimal GTK+ application should be set up and built using OpenEmbedded.</p>
<h1>Application Source</h1>
<p>I created a sample GTK hello application located at: <a href="http://dev.bec-systems.com/svn/pub/gtk_hello/">http://dev.bec-systems.com/svn/pub/gtk_hello</a>.  This is a SVN repository, so you can simply &#8220;svn co&#8221; the above URI to check out the code.  If you are running Ubuntu, you can install the necessary tools to build a native Gtk+ application by:</p>
<ul>
<li>sudo apt-get install libgtk2.0-dev build-essential autoconf automake pkg-config</li>
</ul>
<p>To build on your x86 Linux PC, run the following steps:</p>
<ul>
<li>svn co  <a href="http://dev.bec-systems.com/svn/pub/gtk_hello/">http://dev.bec-systems.com/svn/pub/gtk_hello</a></li>
<li>cd gtk_hello</li>
<li>autoreconf -i</li>
<li>./configure &#8211;prefix=`pwd`/install</li>
<li>make install</li>
</ul>
<p>This compiles and installs the application in to the &#8220;install&#8221; directory.  If you look in this directory, you will notice the application binary is installed in the &#8220;install/bin&#8221; directory.  Typically, the install directory is set to /usr/bin, but in this example we set it to install so we don&#8217;t need to run &#8220;make install&#8221; as root, but yet we can verify the install logic works properly.</p>
<h1>OpenEmbedded Recipe</h1>
<p>Now that you have verified the application builds and installs properly on a x86 PC, it is trivial to build the application in OpenEmbedded.  Create a recipe in your OE recipes directory named <em>gtk-hello_svn.bb</em> with the following contents:</p>
<pre>DESCRIPTION = "Sample Gtk+ Hello application, used to demonstrate build system"
AUTHOR = "Cliff Brake &lt;cbrake@bec-systems.com&gt;"

SRCREV = "17"
PV = "0.0+svn${SRCREV}"
PR = "r0"

DEPENDS = "gtk+"

SRC_URI = "svn://dev.bec-systems.com/svn/pub;module=gtk_hello;proto=http;rev=17"

S = "${WORKDIR}/gtk_hello/"

inherit autotools</pre>
<p>Now, run: bitbake gtk-hello.  That is it!  Building Linux applications is easy if you simply use the tools, whether it be autotools, qmake, etc.  Too often there is the tendency to set up your own compile steps with ${CC} variables, etc.  While this seems to be the simple approach at first glance (autotools is too hard), it quickly becomes unmaintainable and in the end is a lot more work than simply learning the basics of the industry standard tools.  See <a href="http://bec-systems.com/site/121/autotools-quick-reference">previous autotools article</a> for more information.</p>
<img src="http://feeds.feedburner.com/~r/bec-systems/~4/AY3joqZanDc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://bec-systems.com/site/509/best-practices-for-building-gtk-applications-with-openembedded/feed</wfw:commentRss>
		<feedburner:origLink>http://bec-systems.com/site/509/best-practices-for-building-gtk-applications-with-openembedded</feedburner:origLink></item>
	</channel>
</rss>
