Hello,<div><br></div><div>Apologies if this is the wrong list. I&#39;m having trouble getting cairomm to link on my Ubuntu machine. Today I installed libcairomm-1.0-dev using apt-get:</div><div><br></div><div><div><font size="1" face="&#39;courier new&#39;, monospace">ckehoe@ckehoe-home:~$ aptitude show libcairomm-1.0-dev</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">Package: libcairomm-1.0-dev              </font></div><div><font size="1" face="&#39;courier new&#39;, monospace">State: installed</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">Automatically installed: no</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">Version: 1.10.0-1</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">Priority: optional</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">Section: libdevel</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">Maintainer: Ubuntu Developers &lt;<a href="mailto:ubuntu-devel-discuss@lists.ubuntu.com">ubuntu-devel-discuss@lists.ubuntu.com</a>&gt;</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">Uncompressed Size: 618 k</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">Depends: libcairomm-1.0-1 (= 1.10.0-1), libcairo2-dev (&gt;= 1.10.0),</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">         libsigc++-2.0-dev</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">Suggests: libcairomm-1.0-doc</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">Description: C++ wrappers for Cairo (development files)</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace"> cairomm provides C++ bindings for the Cairo graphics library, a multi-platform</font></div><div><font size="1" face="&#39;courier new&#39;, monospace"> library providing anti-aliased vector-based rendering for multiple target</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace"> backends. </font></div><div><font size="1" face="&#39;courier new&#39;, monospace"> </font></div><div><font size="1" face="&#39;courier new&#39;, monospace"> This package contains the development libraries and header files needed by C++</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace"> programs that want to compile with Cairo. files and examples.</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">Homepage: <a href="http://cairographics.org/cairomm/">http://cairographics.org/cairomm/</a></font></div>
<div><br></div><div>I tried to compile a one-page example program that had worked fine under Fink in MacOS 10.6, and got a bunch of linker errors. Here is a snippet from a different program (one of the cairomm examples) that illustrates the problem:</div>
</div><div><br></div><div><div><font size="1" face="&#39;courier new&#39;, monospace">// test.cc</font></div><div><font size="1" face="&#39;courier new&#39;, monospace"><br></font></div><div><font size="1" face="&#39;courier new&#39;, monospace">#include &lt;cairommconfig.h&gt;</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">#include &lt;cairomm/surface.h&gt;</font></div><div><font size="1" face="&#39;courier new&#39;, monospace"><br></font></div><div><font size="1" face="&#39;courier new&#39;, monospace">int main()</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">{</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">  Cairo::RefPtr&lt;Cairo::ImageSurface&gt; surface =</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">    Cairo::ImageSurface::create(Cairo::FORMAT_ARGB32, 600, 400);</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">  return 0;</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">}</font></div></div><div><br></div><div>I&#39;m using pkg-config to set up the compiler flags:</div>
<div><br></div><div><div><font face="&#39;courier new&#39;, monospace" size="1">ckehoe@ckehoe-home:~$ pkg-config --cflags --libs cairomm-1.0</font></div><div><font face="&#39;courier new&#39;, monospace" size="1">-pthread -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/i386-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/cairomm-1.0 -I/usr/lib/cairomm-1.0/include -I/usr/include/sigc++-2.0 -I/usr/lib/sigc++-2.0/include  -lcairomm-1.0 -lcairo -lsigc-2.0  </font></div>
</div><div><br></div><div>The includes work fine, but the linker cannot find one of the symbols:</div><div><br></div><div><div><font size="1" face="&#39;courier new&#39;, monospace">ckehoe@ckehoe-home:~$ g++ `pkg-config --cflags --libs cairomm-1.0` test.cc -o test</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">/tmp/cciLT3Ew.o: In function `main&#39;:</font></div><div><font size="1" face="&#39;courier new&#39;, monospace">test.cc:(.text+0x31): undefined reference to `Cairo::ImageSurface::create(Cairo::Format, int, int)&#39;</font></div>
<div><font size="1" face="&#39;courier new&#39;, monospace">collect2: ld returned 1 exit status</font></div></div><div><br></div><div>So I went digging. ld does seem to be finding the libcairomm library:</div><div><br></div>
<div><div><font face="&#39;courier new&#39;, monospace" size="1">ckehoe@ckehoe-home:~$ g++ `pkg-config --cflags --libs cairomm-1.0` test.cc -o test -Wl,-t,--verbose | grep libcairomm</font></div><div><font face="&#39;courier new&#39;, monospace" size="1">/attempt to open /usr/lib/gcc/i686-linux-gnu/4.6.1/<a href="http://libcairomm-1.0.so">libcairomm-1.0.so</a> failed</font></div>
<div><font face="&#39;courier new&#39;, monospace" size="1">attempt to open /usr/lib/gcc/i686-linux-gnu/4.6.1/libcairomm-1.0.a failed</font></div><div><font face="&#39;courier new&#39;, monospace" size="1">attempt to open /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/<a href="http://libcairomm-1.0.so">libcairomm-1.0.so</a> failed</font></div>
<div><font face="&#39;courier new&#39;, monospace" size="1">attempt to open /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../i386-linux-gnu/libcairomm-1.0.a failed</font></div><div><font face="&#39;courier new&#39;, monospace" size="1"><b>attempt to open /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/<a href="http://libcairomm-1.0.so">libcairomm-1.0.so</a> succeeded</b></font></div>
<div><font face="&#39;courier new&#39;, monospace" size="1"><b>-lcairomm-1.0 (/usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/<a href="http://libcairomm-1.0.so">libcairomm-1.0.so</a>)</b></font></div><div><font face="&#39;courier new&#39;, monospace" size="1">tmp/ccciO9t8.o: In function `main&#39;:</font></div>
<div><font face="&#39;courier new&#39;, monospace" size="1">test.cc:(.text+0x31): undefined reference to `Cairo::ImageSurface::create(Cairo::Format, int, int)&#39;</font></div><div><font face="&#39;courier new&#39;, monospace" size="1">/usr/bin/ld: link errors found, deleting executable `test&#39;</font></div>
<div><font face="&#39;courier new&#39;, monospace" size="1">collect2: ld returned 1 exit status</font></div></div><div><br></div><div><div>And the missing symbol does appear to be in the library:</div><div><br></div><div>
<div><font face="&#39;courier new&#39;, monospace" size="1">ckehoe@ckehoe-home:~$ objdump -TC /usr/lib/gcc/i686-linux-gnu/4.6.1/../../../../lib/<a href="http://libcairomm-1.0.so">libcairomm-1.0.so</a> | grep &#39;Cairo::ImageSurface::create(Cairo::Format, int, int)&#39;</font></div>
<div><font face="&#39;courier new&#39;, monospace" size="1">00018dd0 g    DF .text<span class="Apple-tab-span" style="white-space:pre">        </span>000000c2  Base        Cairo::ImageSurface::create(Cairo::Format, int, int)</font></div>
<div><br></div></div></div><div>Similar errors occur when I try to compile the examples in /usr/share/doc/libcairomm-1.0-dev/examples. The readme provides this familiar-looking compile command:</div><div><br></div><div><font face="&#39;courier new&#39;, monospace" size="1">g++ `pkg-config --cflags --libs cairomm-1.0` main.cc</font></div>
<div><br></div><div>What am I missing here?</div><div><br></div><div>Thanks in advance for your help.</div><div><br></div><div>- Charlie</div><div><br></div><div><br></div>