<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wcrocke</id>
	<title>Inkscape Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.inkscape.org/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Wcrocke"/>
	<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/Special:Contributions/Wcrocke"/>
	<updated>2026-06-09T21:08:47Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.36.1</generator>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59443</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59443"/>
		<updated>2010-02-27T03:14:22Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&amp;lt;br&amp;gt;&lt;br /&gt;
I prefer to view it as mature, stable and predictable. &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not believe there is much about this procedure which is specific to RHEL4.&amp;lt;br&amp;gt;&lt;br /&gt;
It would probably work on any good Linux installation.&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59347</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59347"/>
		<updated>2010-02-25T13:08:36Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&amp;lt;br&amp;gt;&lt;br /&gt;
I prefer to view it as mature, stable and predictable. &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not believe there us much about this procedure which is specific to RHEL4.&amp;lt;br&amp;gt;&lt;br /&gt;
It would probably work on any good Linux installation.&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59341</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59341"/>
		<updated>2010-02-25T13:07:49Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&amp;lt;br&amp;gt;&lt;br /&gt;
I prefer to view it as mature, stable and predictable. &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I do not believe there us much about this procedure which is specific to RHEL4.&amp;lt;br&amp;gt;&lt;br /&gt;
It would probably work on any good Linux instalation.&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59335</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59335"/>
		<updated>2010-02-25T13:06:08Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* My operating system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&amp;lt;br&amp;gt;&lt;br /&gt;
I prefer to view it as mature, stable and predictable. &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59275</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59275"/>
		<updated>2010-02-22T12:50:39Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Background and Motivation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&amp;lt;br&amp;gt;&lt;br /&gt;
I prefer to view it as mature, stable and predictable. &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59263</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59263"/>
		<updated>2010-02-22T03:29:00Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&amp;lt;br&amp;gt;&lt;br /&gt;
I prefer to view it as mature, stable and predictable. &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59257</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59257"/>
		<updated>2010-02-22T03:22:57Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Surviving ./configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 22 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59251</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59251"/>
		<updated>2010-02-22T03:17:41Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* How to build a package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document.&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59245</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59245"/>
		<updated>2010-02-22T03:08:16Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
Compiling this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle I&lt;br /&gt;
was able to converge on a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
The packages are listed here in the order in which I built them.&lt;br /&gt;
Some packages, like gc6.8,&lt;br /&gt;
have no dependencies and could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so must be built after the cairo package.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off one or two years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59239</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59239"/>
		<updated>2010-02-22T02:59:15Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Bill Crocker]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
&lt;br /&gt;
The process I used to compile this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=User:Wcrocke&amp;diff=59233</id>
		<title>User:Wcrocke</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=User:Wcrocke&amp;diff=59233"/>
		<updated>2010-02-22T02:56:09Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Bill Crocker'''&amp;lt;br&amp;gt;&lt;br /&gt;
Senior Software Engineer&amp;lt;br&amp;gt;&lt;br /&gt;
Analog Devices Inc.&amp;lt;br&amp;gt;&lt;br /&gt;
william dot crocker at analog dot com&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59227</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59227"/>
		<updated>2010-02-22T00:46:19Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
&lt;br /&gt;
The process I used to compile this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
available at the time I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59221</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59221"/>
		<updated>2010-02-22T00:42:58Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages I used.&lt;br /&gt;
&lt;br /&gt;
The process I used to compile this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59215</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59215"/>
		<updated>2010-02-22T00:41:14Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Background and Motivation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on RHEL4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59209</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59209"/>
		<updated>2010-02-22T00:40:38Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Background and Motivation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The company I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59203</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59203"/>
		<updated>2010-02-22T00:15:43Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* How to build a package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update your shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59197</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59197"/>
		<updated>2010-02-22T00:11:45Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* How to find a package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59191</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59191"/>
		<updated>2010-02-22T00:08:50Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Surviving ./configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: And, um, oh yes... '''Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.'''&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59185</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59185"/>
		<updated>2010-02-22T00:07:44Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Surviving ./configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
3: Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
4: Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file and, ah, oh yes&lt;br /&gt;
&lt;br /&gt;
5: Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59179</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59179"/>
		<updated>2010-02-22T00:05:24Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]]&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59173</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59173"/>
		<updated>2010-02-22T00:03:26Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Building Inkscape on RHEL4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
--[[User:Wcrocke|Wcrocke]] 00:03, 22 February 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59167</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59167"/>
		<updated>2010-02-22T00:03:04Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest versions&lt;br /&gt;
which were available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back off 1 or 2 years because my&lt;br /&gt;
compiler (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59161</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59161"/>
		<updated>2010-02-21T23:59:49Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||http://www.inkscape.org/download&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59155</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59155"/>
		<updated>2010-02-21T23:58:44Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||http://www.littlecms.com/downloads.htm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59149</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59149"/>
		<updated>2010-02-21T23:57:50Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59143</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59143"/>
		<updated>2010-02-21T23:56:56Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||ftp://xmlsoft.org/libxml2&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59137</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59137"/>
		<updated>2010-02-21T23:53:50Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||http://www.hpl.hp.com/personal/Hans_Boehm/gc/gc_source&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59131</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59131"/>
		<updated>2010-02-21T23:51:54Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||ftp://ftp.gnu.org/gnu/gsl&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59125</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59125"/>
		<updated>2010-02-21T23:50:27Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||http://ftp.acc.umu.se/pub/gnome/sources/gtkmm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59119</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59119"/>
		<updated>2010-02-21T23:49:03Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||http://ftp.gnome.org/pub/gnome/sources/gtk+&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59113</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59113"/>
		<updated>2010-02-21T23:47:23Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||http://ftp.gnome.org/pub/gnome/sources/pangomm/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59107</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59107"/>
		<updated>2010-02-21T23:42:17Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||http://www.gtkmm.org/download.shtml&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59101</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59101"/>
		<updated>2010-02-21T22:44:48Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Build directory layout */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package,&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59095</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59095"/>
		<updated>2010-02-21T22:43:50Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* How to find a package */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59089</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59089"/>
		<updated>2010-02-21T22:43:07Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||http://slackbuilds.org/repository/13.0/development/gob2/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59083</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59083"/>
		<updated>2010-02-21T22:37:48Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||http://ftp.gnome.org/pub/GNOME/sources/libsigc++/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59077</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59077"/>
		<updated>2010-02-21T22:36:43Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||http://www.icewalkers.com/Linux/Software/514330/ATK.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59071</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59071"/>
		<updated>2010-02-21T22:34:03Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||http://www.ece.uvic.ca/~mdadams/jasper/#download&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59065</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59065"/>
		<updated>2010-02-21T22:31:02Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||http://ftp.gnome.org/pub/GNOME/sources/pango/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59059</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59059"/>
		<updated>2010-02-21T22:29:57Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||http://www.linuxfromscratch.org/blfs/view/cvs/general/glib2.html&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59053</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59053"/>
		<updated>2010-02-21T22:27:51Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||http://fontconfig.org/release/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59047</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59047"/>
		<updated>2010-02-21T22:24:48Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||http://download.savannah.gnu.org/releases-noredirect/freetype/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59041</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59041"/>
		<updated>2010-02-21T22:22:25Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59035</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59035"/>
		<updated>2010-02-21T22:21:11Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||http://www.cairographics.org/releases/&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59029</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59029"/>
		<updated>2010-02-21T21:44:50Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;0&amp;quot; cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;font-family:Courier&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libpng-1.2.41||http://sourceforge.net/projects/libpng/files&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pixman-0.17.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|freetype-2.3.9||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|fontconfig-2.8.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairo-1.8.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glib-2.22.3||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pango-1.24.5||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|jasper-1.701.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|atk-1.29.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libsigc++-2.2.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gob2-2.0.16||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|glibmm-2.22.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|cairomm-1.6.4||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|pangomm-2.26.0||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtk+-2.18.7||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gtkmm-2.18.2||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gsl-1.13||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|gc6.8||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxml2-2.7.6||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|libxslt-1.1.26||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|lcms-1.19||TBD&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|inkscape-0.47||TBD&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59023</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59023"/>
		<updated>2010-02-21T20:53:07Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
#libpng-1.2.41          http://sourceforge.net/projects/libpng/files/&amp;lt;br&amp;gt;&lt;br /&gt;
#pixman-0.17.4&amp;lt;br&amp;gt;&lt;br /&gt;
#freetype-2.3.9&amp;lt;br&amp;gt;&lt;br /&gt;
#fontconfig-2.8.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairo-1.8.8&amp;lt;br&amp;gt;&lt;br /&gt;
#glib-2.22.3&amp;lt;br&amp;gt;&lt;br /&gt;
#pango-1.24.5&amp;lt;br&amp;gt;&lt;br /&gt;
#jasper-1.701.0&amp;lt;br&amp;gt;&lt;br /&gt;
#atk-1.29.4&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.17.0&amp;lt;br&amp;gt;&lt;br /&gt;
#libsigc++-2.2.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gob2-2.0.16&amp;lt;br&amp;gt;&lt;br /&gt;
#glibmm-2.22.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairomm-1.6.4&amp;lt;br&amp;gt;&lt;br /&gt;
#pangomm-2.26.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.18.7&amp;lt;br&amp;gt;&lt;br /&gt;
#gtkmm-2.18.2&amp;lt;br&amp;gt;&lt;br /&gt;
#gsl-1.13&amp;lt;br&amp;gt;&lt;br /&gt;
#gc6.8&amp;lt;br&amp;gt;&lt;br /&gt;
#libxml2-2.7.6&amp;lt;br&amp;gt;&lt;br /&gt;
#libxslt-1.1.26&amp;lt;br&amp;gt;&lt;br /&gt;
#lcms-1.19&amp;lt;br&amp;gt;&lt;br /&gt;
#inkscape-0.47&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59017</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59017"/>
		<updated>2010-02-21T20:49:14Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* List of packages */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
#libpng-1.2.41&amp;lt;br&amp;gt;&lt;br /&gt;
#pixman-0.17.4&amp;lt;br&amp;gt;&lt;br /&gt;
#freetype-2.3.9&amp;lt;br&amp;gt;&lt;br /&gt;
#fontconfig-2.8.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairo-1.8.8&amp;lt;br&amp;gt;&lt;br /&gt;
#glib-2.22.3&amp;lt;br&amp;gt;&lt;br /&gt;
#pango-1.24.5&amp;lt;br&amp;gt;&lt;br /&gt;
#jasper-1.701.0&amp;lt;br&amp;gt;&lt;br /&gt;
#atk-1.29.4&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.17.0&amp;lt;br&amp;gt;&lt;br /&gt;
#libsigc++-2.2.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gob2-2.0.16&amp;lt;br&amp;gt;&lt;br /&gt;
#glibmm-2.22.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairomm-1.6.4&amp;lt;br&amp;gt;&lt;br /&gt;
#pangomm-2.26.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.18.7&amp;lt;br&amp;gt;&lt;br /&gt;
#gtkmm-2.18.2&amp;lt;br&amp;gt;&lt;br /&gt;
#gsl-1.13&amp;lt;br&amp;gt;&lt;br /&gt;
#gc6.8&amp;lt;br&amp;gt;&lt;br /&gt;
#libxml2-2.7.6&amp;lt;br&amp;gt;&lt;br /&gt;
#libxslt-1.1.26&amp;lt;br&amp;gt;&lt;br /&gt;
#lcms-1.19&amp;lt;br&amp;gt;&lt;br /&gt;
#inkscape-0.47&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatible set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59005</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=59005"/>
		<updated>2010-02-21T01:44:44Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* The final ldd */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
#libpng-1.2.41&amp;lt;br&amp;gt;&lt;br /&gt;
#pixman-0.17.4&amp;lt;br&amp;gt;&lt;br /&gt;
#freetype-2.3.9&amp;lt;br&amp;gt;&lt;br /&gt;
#fontconfig-2.8.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairo-1.8.8&amp;lt;br&amp;gt;&lt;br /&gt;
#glib-2.22.3&amp;lt;br&amp;gt;&lt;br /&gt;
#pango-1.24.5&amp;lt;br&amp;gt;&lt;br /&gt;
#jasper-1.701.0&amp;lt;br&amp;gt;&lt;br /&gt;
#atk-1.29.4&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.17.0&amp;lt;br&amp;gt;&lt;br /&gt;
#libsigc++-2.2.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gob2-2.0.16&amp;lt;br&amp;gt;&lt;br /&gt;
#glibmm-2.22.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairomm-1.6.4&amp;lt;br&amp;gt;&lt;br /&gt;
#pangomm-2.26.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.18.7&amp;lt;br&amp;gt;&lt;br /&gt;
#gtkmm-2.18.2&amp;lt;br&amp;gt;&lt;br /&gt;
#gsl-1.13&amp;lt;br&amp;gt;&lt;br /&gt;
#gc6.8&amp;lt;br&amp;gt;&lt;br /&gt;
#libxml2-2.7.6&amp;lt;br&amp;gt;&lt;br /&gt;
#libxslt-1.1.26&amp;lt;br&amp;gt;&lt;br /&gt;
#lcms-1.19&amp;lt;br&amp;gt;&lt;br /&gt;
#inkscape-0.47&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatibility set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final list of library dependencies =&lt;br /&gt;
&lt;br /&gt;
Following is the list of dependencies for the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=58999</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=58999"/>
		<updated>2010-02-21T01:42:23Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Surviving ./configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
#libpng-1.2.41&amp;lt;br&amp;gt;&lt;br /&gt;
#pixman-0.17.4&amp;lt;br&amp;gt;&lt;br /&gt;
#freetype-2.3.9&amp;lt;br&amp;gt;&lt;br /&gt;
#fontconfig-2.8.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairo-1.8.8&amp;lt;br&amp;gt;&lt;br /&gt;
#glib-2.22.3&amp;lt;br&amp;gt;&lt;br /&gt;
#pango-1.24.5&amp;lt;br&amp;gt;&lt;br /&gt;
#jasper-1.701.0&amp;lt;br&amp;gt;&lt;br /&gt;
#atk-1.29.4&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.17.0&amp;lt;br&amp;gt;&lt;br /&gt;
#libsigc++-2.2.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gob2-2.0.16&amp;lt;br&amp;gt;&lt;br /&gt;
#glibmm-2.22.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairomm-1.6.4&amp;lt;br&amp;gt;&lt;br /&gt;
#pangomm-2.26.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.18.7&amp;lt;br&amp;gt;&lt;br /&gt;
#gtkmm-2.18.2&amp;lt;br&amp;gt;&lt;br /&gt;
#gsl-1.13&amp;lt;br&amp;gt;&lt;br /&gt;
#gc6.8&amp;lt;br&amp;gt;&lt;br /&gt;
#libxml2-2.7.6&amp;lt;br&amp;gt;&lt;br /&gt;
#libxslt-1.1.26&amp;lt;br&amp;gt;&lt;br /&gt;
#lcms-1.19&amp;lt;br&amp;gt;&lt;br /&gt;
#inkscape-0.47&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatibility set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; said (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final ldd =&lt;br /&gt;
&lt;br /&gt;
Following is the ldd() of the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
	<entry>
		<id>https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=58993</id>
		<title>CompilingRHEL</title>
		<link rel="alternate" type="text/html" href="https://wiki.inkscape.org/wiki/index.php?title=CompilingRHEL&amp;diff=58993"/>
		<updated>2010-02-21T01:41:45Z</updated>

		<summary type="html">&lt;p&gt;Wcrocke: /* Surviving ./configure */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Building Inkscape on RHEL4 =&lt;br /&gt;
&lt;br /&gt;
This page documents the process I used to build Inkscape 0.47 on Red Hat Enterprise Linux, Version #4 (RHEL4.)&lt;br /&gt;
Many consider RHEL4 to be an archaic operating system.&lt;br /&gt;
I prefer to think of it as mature, stable and predictable.   &amp;lt;tt&amp;gt;:-)&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I performed this process on 19-FEB-2010 so this information is&lt;br /&gt;
already out of date.&lt;br /&gt;
&lt;br /&gt;
= Background and Motivation =&lt;br /&gt;
&lt;br /&gt;
The corporation I work for is not free to run the latest OS versions.&lt;br /&gt;
We are constrained by our major application vendors.&lt;br /&gt;
That leaves us stuck on Red Hat Enterprise Linux (RHEL) Version #4,&lt;br /&gt;
which appears to come bundled with Inkscape 0.44&lt;br /&gt;
&lt;br /&gt;
Meanwhile I'm watching all sorts of cool Inkscape tutorials on the web, but&lt;br /&gt;
they use later versions.&lt;br /&gt;
&lt;br /&gt;
My sys-admins would not consider an&lt;br /&gt;
Inkscape upgrade due to the contamination issue noted below.&lt;br /&gt;
The build process documented here avoids system installs&lt;br /&gt;
by using a local install directory.&lt;br /&gt;
&lt;br /&gt;
This is an old-school build as I download and compile source code&lt;br /&gt;
and do not use any RPMs.&lt;br /&gt;
&lt;br /&gt;
= List of packages =&lt;br /&gt;
&lt;br /&gt;
Following is the list of packages which I used.&lt;br /&gt;
&lt;br /&gt;
The process by which I arrived at this list was no small feat&lt;br /&gt;
and took over 15 hours. I consider it a miracle that I&lt;br /&gt;
was able to find a compatible set of packages and compiler.&lt;br /&gt;
&lt;br /&gt;
They are listed here in the order in which I built them.&lt;br /&gt;
This is not the only build order. You can't tell by looking,&lt;br /&gt;
but gc6.8 has no dependencies and so could be built at any time.&lt;br /&gt;
The pango-1.24.5 package, on the other hand, requires cairo-1.8.8&lt;br /&gt;
and so the cairo package must be built first.&lt;br /&gt;
&lt;br /&gt;
Not all of the packages listed here are the latest version&lt;br /&gt;
which was available at the time that I performed the build.&lt;br /&gt;
In several cases I had to back out 1 or 2 years because my&lt;br /&gt;
compiler of choice (gcc 3.4.4) did not like the more recent versions.&lt;br /&gt;
&lt;br /&gt;
#libpng-1.2.41&amp;lt;br&amp;gt;&lt;br /&gt;
#pixman-0.17.4&amp;lt;br&amp;gt;&lt;br /&gt;
#freetype-2.3.9&amp;lt;br&amp;gt;&lt;br /&gt;
#fontconfig-2.8.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairo-1.8.8&amp;lt;br&amp;gt;&lt;br /&gt;
#glib-2.22.3&amp;lt;br&amp;gt;&lt;br /&gt;
#pango-1.24.5&amp;lt;br&amp;gt;&lt;br /&gt;
#jasper-1.701.0&amp;lt;br&amp;gt;&lt;br /&gt;
#atk-1.29.4&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.17.0&amp;lt;br&amp;gt;&lt;br /&gt;
#libsigc++-2.2.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gob2-2.0.16&amp;lt;br&amp;gt;&lt;br /&gt;
#glibmm-2.22.0&amp;lt;br&amp;gt;&lt;br /&gt;
#cairomm-1.6.4&amp;lt;br&amp;gt;&lt;br /&gt;
#pangomm-2.26.0&amp;lt;br&amp;gt;&lt;br /&gt;
#gtk+-2.18.7&amp;lt;br&amp;gt;&lt;br /&gt;
#gtkmm-2.18.2&amp;lt;br&amp;gt;&lt;br /&gt;
#gsl-1.13&amp;lt;br&amp;gt;&lt;br /&gt;
#gc6.8&amp;lt;br&amp;gt;&lt;br /&gt;
#libxml2-2.7.6&amp;lt;br&amp;gt;&lt;br /&gt;
#libxslt-1.1.26&amp;lt;br&amp;gt;&lt;br /&gt;
#lcms-1.19&amp;lt;br&amp;gt;&lt;br /&gt;
#inkscape-0.47&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Please do not change any of these package numbers without confirming a compatibility set.&lt;br /&gt;
&lt;br /&gt;
= How to find a package =&lt;br /&gt;
&lt;br /&gt;
I'm sorry that I did not include the location where I found each library.&lt;br /&gt;
I did not think to write that information down at the time, especially&lt;br /&gt;
since I had no confidence in this entire process.&lt;br /&gt;
&lt;br /&gt;
I ''do'' remember that they were not hard to find.&lt;br /&gt;
&lt;br /&gt;
Perform a google search for the string &amp;quot;lib&amp;lt;package-name download&amp;quot;&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;libgc download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, perhaps:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;&amp;quot;gtkmm download&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You will get multiple hits, but&lt;br /&gt;
hopefully one near the top will link to&lt;br /&gt;
an obvious home page for the package.&lt;br /&gt;
Your looking for a list of compressed tar files.&lt;br /&gt;
Something like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:gc6.6.tar.gz        09-Sep-2005 12:04       736K&lt;br /&gt;
:gc6.7.tar.gz        03-Mar-2006 12:43       738K&lt;br /&gt;
:gc6.8.tar.gz        12-Jul-2006 17:17       739K&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The .gz files will be decompressed with gunzip.&lt;br /&gt;
You could also download .bz2 files and decompress&lt;br /&gt;
with bunzip2.&lt;br /&gt;
&lt;br /&gt;
= Do not contaminate your computer =&lt;br /&gt;
&lt;br /&gt;
I recommend that you use a local installation directory&lt;br /&gt;
instead of installing packages in the standard system directories.&lt;br /&gt;
&lt;br /&gt;
When you add new files (or replace existing) files&lt;br /&gt;
in system directories you are effectively contaminating&lt;br /&gt;
the computer. Programs that used to work may not work any longer&lt;br /&gt;
and you may not realize that harm has been not until&lt;br /&gt;
the trail has grown cold. (We have all had this happen,&lt;br /&gt;
especially on Windows; You go to run some program and it&lt;br /&gt;
does not work any more.)&lt;br /&gt;
&lt;br /&gt;
Certainly, if you are experimenting, this is the right move.&lt;br /&gt;
&lt;br /&gt;
Also, you do not need sudo or the root password.&lt;br /&gt;
&lt;br /&gt;
= Build directory layout =&lt;br /&gt;
&lt;br /&gt;
Pick an empty directory in which to download&lt;br /&gt;
and build all packages.&lt;br /&gt;
&lt;br /&gt;
In addition to a separate build directory for each package&lt;br /&gt;
add one additional sub-directory to server as the&lt;br /&gt;
installation point.&lt;br /&gt;
&lt;br /&gt;
The package directories will be created when you de-tar the&lt;br /&gt;
downloads.&lt;br /&gt;
&lt;br /&gt;
= Preparing your shell environment =&lt;br /&gt;
&lt;br /&gt;
The following assumes that your root build directory&lt;br /&gt;
is &amp;lt;tt&amp;gt;&amp;quot;/home/me/inkscape&amp;quot;&amp;lt;/tt&amp;gt; and that it has a sub-directory&lt;br /&gt;
named &amp;lt;tt&amp;gt;&amp;quot;install&amp;quot;&amp;lt;/tt&amp;gt; which will serve as the installation point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:setenv INSTDIR &amp;quot;/home/me/inkscape/install&amp;quot;&lt;br /&gt;
:setenv CXXFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv CPPFLAGS &amp;quot;-I${INSTDIR}/include&amp;quot;&lt;br /&gt;
:setenv LDFLAGS &amp;quot;-L${INSTDIR}/lib -lm&amp;quot;&lt;br /&gt;
:setenv LD_LIBRARY_PATH &amp;quot;${INSTDIR}/lib:${LD_LIBRARY_PATH}&amp;quot;&lt;br /&gt;
:setenv PKG_CONFIG_PATH &amp;quot;${INSTDIR}/lib/pkgconfig&amp;quot;&lt;br /&gt;
:setenv PATH &amp;quot;${INSTDIR}/bin:${PATH}&amp;quot;&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Why do we need these settings?&lt;br /&gt;
&lt;br /&gt;
There are package dependencies.&lt;br /&gt;
For example, we build &amp;lt;tt&amp;gt;pango&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;cairo&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
early in the build-order and they will be used to&lt;br /&gt;
build &amp;lt;tt&amp;gt;gtk+&amp;lt;/tt&amp;gt; later in the build order.&lt;br /&gt;
That explains &amp;lt;tt&amp;gt;CXXFLAGS&amp;lt;/tt&amp;gt;(compilation flags),&lt;br /&gt;
&amp;lt;tt&amp;gt;CPPFLAGS&amp;lt;/tt&amp;gt;(more compilation flags), &amp;lt;tt&amp;gt;LDFLAGS(link flags)&amp;lt;/tt&amp;gt; and&lt;br /&gt;
&amp;lt;tt&amp;gt;PKG_CONFIG_PATH&amp;lt;/tt&amp;gt;(used at link time, I guess)&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt; because some packages install programs&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/bin&amp;lt;/tt&amp;gt; directory. These programs are&lt;br /&gt;
used by later packages to determine version information.&lt;br /&gt;
Therefore, they must be found along the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.&lt;br /&gt;
That is also why I recommend a &amp;lt;tt&amp;gt;rehash&amp;lt;/tt&amp;gt; after building each package.&lt;br /&gt;
&lt;br /&gt;
I set &amp;lt;tt&amp;gt;LD_LIBRARY_PATH&amp;lt;/tt&amp;gt; for the same reason.&lt;br /&gt;
For these programs to run they must find all&lt;br /&gt;
required libraries, some of which were installed&lt;br /&gt;
in the &amp;lt;tt&amp;gt;${INSTDIR}/lib&amp;lt;/tt&amp;gt; directory.&lt;br /&gt;
&lt;br /&gt;
I added the math library &amp;quot;-lm&amp;quot; to &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; to work&lt;br /&gt;
around the jasper library idiosyncrasy as noted below.&lt;br /&gt;
&lt;br /&gt;
= Which compiler =&lt;br /&gt;
&lt;br /&gt;
I used gcc version 3.4.4&lt;br /&gt;
&lt;br /&gt;
= How to build a package =&lt;br /&gt;
&lt;br /&gt;
The following procedure works for most packages,&lt;br /&gt;
but it does not work for all of them.&lt;br /&gt;
The exceptions are noted in sections later in this document&lt;br /&gt;
So, you should not build any packages until you have read&lt;br /&gt;
this entire document.&lt;br /&gt;
&lt;br /&gt;
Download the compressed tar file to the root directory.&lt;br /&gt;
&lt;br /&gt;
Uncompress the file.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;gunzip xyz-1.2.3.tar.gz&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De-tar the file. This will create a dedicated sub-directory in which to build the package.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;tar xvf xyz-1.2.3.tar&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Change to the package directory.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;cd xyz-1.2.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Configure the package.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:./configure -prefix ${INSTDIR}&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Compile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Install.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make install&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Update the shells program cache.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:rehash&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you want to ''rebuild'' a component you will need&lt;br /&gt;
to do the following first:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:make clean&lt;br /&gt;
:make distclean&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Package idiosyncrasies =&lt;br /&gt;
&lt;br /&gt;
== Build order and dependencies ==&lt;br /&gt;
&lt;br /&gt;
The packages must be built and installed in the documented order.&lt;br /&gt;
When built in the documented order &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; should not complain (and abort) about any dependency violations.&lt;br /&gt;
See the section on &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; later in this document.&lt;br /&gt;
&lt;br /&gt;
== When building jasper-1.701.0 ==&lt;br /&gt;
&lt;br /&gt;
1: By default, jasper builds to a static library, but packages which use jasper&lt;br /&gt;
expect a shared build so an additional argument must be added to the &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;./configure --prefix ${INSTDIR} --enable-shared&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: The gtk configure script aborted the first time I tried it because the required jasper library&lt;br /&gt;
could not be found, but the real problem was that the&lt;br /&gt;
&amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; test for availability failed to link because&lt;br /&gt;
it did not include the standard math library &amp;quot;-lm&amp;quot;.&lt;br /&gt;
So, I added -lm to LDFLAGS and then it was happy.&lt;br /&gt;
The lesson here is to always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file&lt;br /&gt;
for the ''real'' &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; failure story.&lt;br /&gt;
&lt;br /&gt;
== When building libxml2-2.7.6 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== When building libxslt-1.1.26 ==&lt;br /&gt;
&lt;br /&gt;
1: &amp;lt;tt&amp;gt;lbxsltv&amp;lt;/tt&amp;gt; uses &amp;lt;tt&amp;gt;${INSTDIR}/bin/xml2-config&amp;lt;/tt&amp;gt; to determine the version of the &amp;lt;tt&amp;gt;libxml(2)&amp;lt;/tt&amp;gt;&lt;br /&gt;
library which is available.  This is an executable which needs to be found along the PATH.&lt;br /&gt;
So, the bin sub-directory of the install location has to be added to the &amp;lt;tt&amp;gt;PATH&amp;lt;/tt&amp;gt;.  Thus the above &amp;lt;tt&amp;gt;&amp;quot;setenv PATH ...&amp;quot;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
2: &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; complains about this at the end, but it does not appear&lt;br /&gt;
to have any significant consequences.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;/bin/rm: cannot remove `libtoolT': No such file or directory&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
3: The &amp;lt;tt&amp;gt;libxsl&amp;lt;/tt&amp;gt; package builds libraries '''and''' the program &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I could not get &amp;lt;tt&amp;gt;xsltproc&amp;lt;/tt&amp;gt; to link, but it is not required&lt;br /&gt;
to build Inkscape, so I edited the &amp;lt;tt&amp;gt;Makefile&amp;lt;/tt&amp;gt;&lt;br /&gt;
and removed it so that the make would complete.&lt;br /&gt;
Note: &amp;lt;tt&amp;gt;Makefiles&amp;lt;/tt&amp;gt; are made by &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt;. That is what it does.&lt;br /&gt;
&lt;br /&gt;
== When building inkscape-0.47 ==&lt;br /&gt;
&lt;br /&gt;
1: Surprising compilation error in one of the source files.&lt;br /&gt;
&lt;br /&gt;
:document.cpp:185: error: ISO C++ forbids casting between pointer-to-function and pointer-to-object&lt;br /&gt;
&lt;br /&gt;
So I hacked line 185 from this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;(sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;reinterpret_cast&amp;lt;gpointer&amp;gt;((void*)sp_document_reset_key),&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Surviving &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; =&lt;br /&gt;
&lt;br /&gt;
1: If &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; tells you that it can't find a dependent package,&lt;br /&gt;
that may not be the real problem. Always check the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file for the real story.&lt;br /&gt;
&lt;br /&gt;
As noted above, when &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; told me that it could not find&lt;br /&gt;
the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt; package, a look in the &amp;lt;tt&amp;gt;config.log&amp;lt;/tt&amp;gt; file revealed that&lt;br /&gt;
the logic used to determine the existence of the &amp;lt;tt&amp;gt;jasper&amp;lt;/tt&amp;gt;&lt;br /&gt;
package involved building a little test program. That test program&lt;br /&gt;
failed to link because it could not find symbols like &amp;lt;tt&amp;gt;pow&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;floor&amp;lt;/tt&amp;gt;.&lt;br /&gt;
I new these came from the math library and fixed the problem by&lt;br /&gt;
adding &amp;lt;tt&amp;gt;&amp;quot;-lm&amp;quot;&amp;lt;/tt&amp;gt; to the &amp;lt;tt&amp;gt;LDFLAGS&amp;lt;/tt&amp;gt; environment variable.&lt;br /&gt;
&lt;br /&gt;
2: The first time I tried to build Inkscape (6 months ago) I saw &amp;lt;tt&amp;gt;./configure&amp;lt;/tt&amp;gt; say (something like) this:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;tt&amp;gt;Dependency (gmodule-2.0 &amp;gt;= 2.21.1) not met.&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This effort ended in frustration because I could not find the &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
package anywhere on the web. This time I determined that &amp;lt;tt&amp;gt;gmodule&amp;lt;/tt&amp;gt;&lt;br /&gt;
is actually a library and it is provided by the &amp;lt;tt&amp;gt;glib-2.22.3&amp;lt;/tt&amp;gt;&lt;br /&gt;
package. (At the end of the build process the &amp;lt;tt&amp;gt;install/lib&amp;lt;/tt&amp;gt; directory&lt;br /&gt;
contained 38 library files (*.so), but I had only built 23 packages.)&lt;br /&gt;
&lt;br /&gt;
= The final ldd =&lt;br /&gt;
&lt;br /&gt;
Following is the ldd() of the final Inkscape executable.&lt;br /&gt;
Note that the library versions listed in this table bear no correspondence&lt;br /&gt;
to the package from which they were built.&lt;br /&gt;
For example, we built libgtkmm from the package gtkmm-2.18.2, but got the library libgtkmm-2.4.so.1&lt;br /&gt;
This just adds to the confusion.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
:libgtkmm-2.4.so.1&lt;br /&gt;
:libatkmm-1.6.so.1&lt;br /&gt;
:libgdkmm-2.4.so.1&lt;br /&gt;
:libgiomm-2.4.so.1&lt;br /&gt;
:libpangomm-1.4.so.1&lt;br /&gt;
:libglibmm-2.4.so.1&lt;br /&gt;
:libcairomm-1.0.so.1&lt;br /&gt;
:libgtk-x11-2.0.so.0&lt;br /&gt;
:libgdk-x11-2.0.so.0&lt;br /&gt;
:libatk-1.0.so.0&lt;br /&gt;
:libgio-2.0.so.0&lt;br /&gt;
:libpangoft2-1.0.so.0&lt;br /&gt;
:libgdk_pixbuf-2.0.so.0&lt;br /&gt;
:libpangocairo-1.0.so.0&lt;br /&gt;
:libpango-1.0.so.0&lt;br /&gt;
:libfreetype.so.6&lt;br /&gt;
:libfontconfig.so.1&lt;br /&gt;
:libgobject-2.0.so.0&lt;br /&gt;
:libgmodule-2.0.so.0&lt;br /&gt;
:libxslt.so.1&lt;br /&gt;
:libz.so.1&lt;br /&gt;
:libxml2.so.2&lt;br /&gt;
:libcairo.so.2&lt;br /&gt;
:libsigc-2.0.so.0&lt;br /&gt;
:libgthread-2.0.so.0&lt;br /&gt;
:librt.so.1&lt;br /&gt;
:libglib-2.0.so.0&lt;br /&gt;
:libpng12.so.0&lt;br /&gt;
:libgsl.so.0&lt;br /&gt;
:libgslcblas.so.0&lt;br /&gt;
:libm.so.6&lt;br /&gt;
:libgomp.so.1&lt;br /&gt;
:libpopt.so.0&lt;br /&gt;
:libaspell.so.15&lt;br /&gt;
:libgc.so.1&lt;br /&gt;
:libstdc++.so.6&lt;br /&gt;
:libgcc_s.so.1&lt;br /&gt;
:libpthread.so.0&lt;br /&gt;
:libc.so.6&lt;br /&gt;
:libdl.so.2&lt;br /&gt;
:libX11.so.6&lt;br /&gt;
:libresolv.so.2&lt;br /&gt;
:libpixman-1.so.0&lt;br /&gt;
:libexpat.so.0&lt;br /&gt;
:libXrender.so.1&lt;br /&gt;
:libSM.so.6&lt;br /&gt;
:libICE.so.6&lt;br /&gt;
:libXinerama.so.1&lt;br /&gt;
:libXext.so.6&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= My operating system =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;tt&amp;gt;&lt;br /&gt;
&amp;gt;uname -a&amp;lt;br&amp;gt;&lt;br /&gt;
Linux juno.adsdesign.analog.com 2.6.9-89.0.9.ELsmp #1 SMP Wed Aug 19 08:06:10 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux&lt;br /&gt;
&lt;br /&gt;
&amp;gt;cat /etc/issue&amp;lt;br&amp;gt;&lt;br /&gt;
Red Hat Enterprise Linux WS release 4 (Nahant Update 8)&amp;lt;br&amp;gt;&lt;br /&gt;
Kernel \r on an \m&lt;br /&gt;
&amp;lt;/tt&amp;gt;&lt;/div&gt;</summary>
		<author><name>Wcrocke</name></author>
	</entry>
</feed>