Public bug reported:

Trying ubuntu 16.04.1, and development seems hard...

Trivial test program:

$ cat app.cc
#include <gtkmm.h>

int main(int argc, char *argv[])
{
        auto app = Gtk::Application::create(argc, argv, "uk.ac.cam.bpi.app");
        Gtk::Window window;
        window.set_default_size(200,200);

        return app->run(window);
}
$ cat Makefile.am
bin_PROGRAMS = app
app_SOURCES = app.cc
app_CXXFLAGS = $(GTKMM_CFLAGS)
app_LDFLAGS = $(GTKMM_LIBS)
$ cat configure.ac
AC_INIT([app], [1.0])
AC_CONFIG_AUX_DIR([build])
AC_CONFIG_MACRO_DIR([m4])
AM_INIT_AUTOMAKE([-Wall foreign])
AC_PROG_CXX
PKG_CHECK_MODULES([GTKMM],[gtkmm-3.0])
AC_CONFIG_FILES([Makefile])
AC_OUTPUT

First surprise:
Package gtkmm-3.0 was not found in the pkg-config search path.

gtkmm-3.0-dev was installed using apt install, and put in
/usr/lib/x86_64-linux-gnu/pkgconfig, so I have to set PKG_CONFIG_PATH?
Shouldn't pkg-config know that that is where -dev packages put .pc files
by default?

$ echo $PKG_CONFIG_PATH
/usr/lib/x86_64-linux-gnu/pkgconfig

then compilation fails with:

g++ -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include 
-I/usr/include/atkmm-1.6 -I/usr/include/atk-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/glibmm-2.4 
-I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/sigc++-2.0 
-I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/giomm-2.4 
-I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4  
-I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/cairomm-1.0 
-I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/cairo 
-I/usr/include/pixman-1 -I/usr/include  -I/usr/include/freetype2  
-I/usr/include/freetype2 -I/usr/include/libpng12 -I/home/prlw1/pkg/include 
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/gtk-3.0 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0/ 
-I/usr/include/mirclient -I/usr/include/mircommon -I/usr/include/mircookie 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/includ
 e/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/gtk-3.0/unix-print -I/usr/include/gdkmm-3.0 
-I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -std=c++11 -pthread   -g -O2 
-L/usr/lib/x86_64-linux-gnu -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 
-lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 
-latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo -lsigc-2.0 
-lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0    -o app app-app.o  
app-app.o: In function `main':
/home/prlw1/gui/app/app.cc:5: undefined reference to 
`Glib::ustring::ustring(char const*)'
/home/prlw1/gui/app/app.cc:5: undefined reference to 
`Gtk::Application::create(int&, char**&, Glib::ustring const&, 
Gio::ApplicationFlags)'
/home/prlw1/gui/app/app.cc:5: undefined reference to `Glib::ustring::~ustring()'
/home/prlw1/gui/app/app.cc:6: undefined reference to 
`Gtk::Window::Window(Gtk::WindowType)'
/home/prlw1/gui/app/app.cc:7: undefined reference to 
`Gtk::Window::set_default_size(int, int)'
/home/prlw1/gui/app/app.cc:9: undefined reference to 
`Gtk::Application::run(Gtk::Window&)'
/home/prlw1/gui/app/app.cc:6: undefined reference to `Gtk::Window::~Window()'
/home/prlw1/gui/app/app.cc:6: undefined reference to `Gtk::Window::~Window()'
app-app.o: In function `main':
/usr/include/glibmm-2.4/glibmm/refptr.h:273: undefined reference to 
`Glib::ustring::~ustring()'
collect2: error: ld returned 1 exit status
Makefile:363: recipe for target 'app' failed

Puzzled as -lgtk-3 and -lglib-2.0 appear, and apt install
libgtkmm-3.0-dev seemed to install the necessary packages.

Just tried the exact same example code above on NetBSD-current/amd64,
and it succeeds with:

$ make
g++ -I/usr/pkg/include/gtkmm-3.0 -I/usr/pkg/lib/gtkmm-3.0/include 
-I/usr/pkg/include/atkmm-1.6 -I/usr/pkg/include/atk-1.0 
-I/usr/pkg/include/glib/glib-2.0 -I/usr/pkg/lib/glib-2.0/include 
-I/usr/pkg/include -I/usr/pkg/include/glibmm-2.4 
-I/usr/pkg/lib/glibmm-2.4/include -I/usr/pkg/include/sigc++-2.0 
-I/usr/pkg/lib/sigc++-2.0/include -I/usr/pkg/include/giomm-2.4 
-I/usr/pkg/lib/giomm-2.4/include -I/usr/pkg/include/pangomm-1.4  
-I/usr/pkg/lib/pangomm-1.4/include -I/usr/pkg/include/cairomm-1.0 
-I/usr/pkg/lib/cairomm-1.0/include -I/usr/pkg/include/cairo 
-I/usr/X11R7/include/pixman-1 -I/usr/X11R7/include  
-I/usr/X11R7/include/freetype2 -I/usr/pkg/include/libpng16 -I/usr/X11R7/include 
-I/usr/pkg/include/pango-1.0 -I/usr/pkg/include/harfbuzz 
-I/usr/pkg/include/gtk-3.0 -I/usr/pkg/include/gdk-pixbuf-2.0 
-I/usr/pkg/include/glib/gio-unix-2.0/ -I/usr/pkg/include/at-spi2-atk/2.0 
-I/usr/pkg/include/at-spi-2.0 -I/usr/pkg/include/dbus-1.0 
-I/usr/pkg/lib/dbus-1.0/include -I/usr/pkg/include/gtk-3.0/unix
 -print -I/usr/pkg/include/gdkmm-3.0 -I/usr/pkg/lib/gdkmm-3.0/include 
-D_REENTRANT -pthread -g -O2 -L/usr/pkg/lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 
-lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 
-lpango-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo 
-lsigc-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -Wl,-R/usr/pkg/lib -lglib-2.0 -lintl  
 -o app app-app.o  
ld: warning: libintl.so.1, needed by /usr/pkg/lib/libgtkmm-3.0.so, may conflict 
with libintl.so.8
$

** Affects: gtkmm3.0 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to gtkmm3.0 in Ubuntu.
https://bugs.launchpad.net/bugs/1611069

Title:
  missing symbols using gtkmm-3.0-dev

Status in gtkmm3.0 package in Ubuntu:
  New

Bug description:
  Trying ubuntu 16.04.1, and development seems hard...

  Trivial test program:

  $ cat app.cc
  #include <gtkmm.h>

  int main(int argc, char *argv[])
  {
          auto app = Gtk::Application::create(argc, argv, "uk.ac.cam.bpi.app");
          Gtk::Window window;
          window.set_default_size(200,200);

          return app->run(window);
  }
  $ cat Makefile.am
  bin_PROGRAMS = app
  app_SOURCES = app.cc
  app_CXXFLAGS = $(GTKMM_CFLAGS)
  app_LDFLAGS = $(GTKMM_LIBS)
  $ cat configure.ac
  AC_INIT([app], [1.0])
  AC_CONFIG_AUX_DIR([build])
  AC_CONFIG_MACRO_DIR([m4])
  AM_INIT_AUTOMAKE([-Wall foreign])
  AC_PROG_CXX
  PKG_CHECK_MODULES([GTKMM],[gtkmm-3.0])
  AC_CONFIG_FILES([Makefile])
  AC_OUTPUT

  First surprise:
  Package gtkmm-3.0 was not found in the pkg-config search path.

  gtkmm-3.0-dev was installed using apt install, and put in
  /usr/lib/x86_64-linux-gnu/pkgconfig, so I have to set PKG_CONFIG_PATH?
  Shouldn't pkg-config know that that is where -dev packages put .pc
  files by default?

  $ echo $PKG_CONFIG_PATH
  /usr/lib/x86_64-linux-gnu/pkgconfig

  then compilation fails with:

  g++ -I/usr/include/gtkmm-3.0 -I/usr/lib/x86_64-linux-gnu/gtkmm-3.0/include 
-I/usr/include/atkmm-1.6 -I/usr/include/atk-1.0 -I/usr/include/glib-2.0 
-I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/glibmm-2.4 
-I/usr/lib/x86_64-linux-gnu/glibmm-2.4/include -I/usr/include/sigc++-2.0 
-I/usr/lib/x86_64-linux-gnu/sigc++-2.0/include -I/usr/include/giomm-2.4 
-I/usr/lib/x86_64-linux-gnu/giomm-2.4/include -I/usr/include/pangomm-1.4  
-I/usr/lib/x86_64-linux-gnu/pangomm-1.4/include -I/usr/include/cairomm-1.0 
-I/usr/lib/x86_64-linux-gnu/cairomm-1.0/include -I/usr/include/cairo 
-I/usr/include/pixman-1 -I/usr/include  -I/usr/include/freetype2  
-I/usr/include/freetype2 -I/usr/include/libpng12 -I/home/prlw1/pkg/include 
-I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/gtk-3.0 
-I/usr/include/gdk-pixbuf-2.0 -I/usr/include/gio-unix-2.0/ 
-I/usr/include/mirclient -I/usr/include/mircommon -I/usr/include/mircookie 
-I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/incl
 ude/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include 
-I/usr/include/gtk-3.0/unix-print -I/usr/include/gdkmm-3.0 
-I/usr/lib/x86_64-linux-gnu/gdkmm-3.0/include -std=c++11 -pthread   -g -O2 
-L/usr/lib/x86_64-linux-gnu -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 -lgiomm-2.4 
-lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 
-latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo -lsigc-2.0 
-lgdk_pixbuf-2.0 -lgobject-2.0 -lglib-2.0    -o app app-app.o  
  app-app.o: In function `main':
  /home/prlw1/gui/app/app.cc:5: undefined reference to 
`Glib::ustring::ustring(char const*)'
  /home/prlw1/gui/app/app.cc:5: undefined reference to 
`Gtk::Application::create(int&, char**&, Glib::ustring const&, 
Gio::ApplicationFlags)'
  /home/prlw1/gui/app/app.cc:5: undefined reference to 
`Glib::ustring::~ustring()'
  /home/prlw1/gui/app/app.cc:6: undefined reference to 
`Gtk::Window::Window(Gtk::WindowType)'
  /home/prlw1/gui/app/app.cc:7: undefined reference to 
`Gtk::Window::set_default_size(int, int)'
  /home/prlw1/gui/app/app.cc:9: undefined reference to 
`Gtk::Application::run(Gtk::Window&)'
  /home/prlw1/gui/app/app.cc:6: undefined reference to `Gtk::Window::~Window()'
  /home/prlw1/gui/app/app.cc:6: undefined reference to `Gtk::Window::~Window()'
  app-app.o: In function `main':
  /usr/include/glibmm-2.4/glibmm/refptr.h:273: undefined reference to 
`Glib::ustring::~ustring()'
  collect2: error: ld returned 1 exit status
  Makefile:363: recipe for target 'app' failed

  Puzzled as -lgtk-3 and -lglib-2.0 appear, and apt install
  libgtkmm-3.0-dev seemed to install the necessary packages.

  Just tried the exact same example code above on NetBSD-current/amd64,
  and it succeeds with:

  $ make
  g++ -I/usr/pkg/include/gtkmm-3.0 -I/usr/pkg/lib/gtkmm-3.0/include 
-I/usr/pkg/include/atkmm-1.6 -I/usr/pkg/include/atk-1.0 
-I/usr/pkg/include/glib/glib-2.0 -I/usr/pkg/lib/glib-2.0/include 
-I/usr/pkg/include -I/usr/pkg/include/glibmm-2.4 
-I/usr/pkg/lib/glibmm-2.4/include -I/usr/pkg/include/sigc++-2.0 
-I/usr/pkg/lib/sigc++-2.0/include -I/usr/pkg/include/giomm-2.4 
-I/usr/pkg/lib/giomm-2.4/include -I/usr/pkg/include/pangomm-1.4  
-I/usr/pkg/lib/pangomm-1.4/include -I/usr/pkg/include/cairomm-1.0 
-I/usr/pkg/lib/cairomm-1.0/include -I/usr/pkg/include/cairo 
-I/usr/X11R7/include/pixman-1 -I/usr/X11R7/include  
-I/usr/X11R7/include/freetype2 -I/usr/pkg/include/libpng16 -I/usr/X11R7/include 
-I/usr/pkg/include/pango-1.0 -I/usr/pkg/include/harfbuzz 
-I/usr/pkg/include/gtk-3.0 -I/usr/pkg/include/gdk-pixbuf-2.0 
-I/usr/pkg/include/glib/gio-unix-2.0/ -I/usr/pkg/include/at-spi2-atk/2.0 
-I/usr/pkg/include/at-spi-2.0 -I/usr/pkg/include/dbus-1.0 
-I/usr/pkg/lib/dbus-1.0/include -I/usr/pkg/include/gtk-3.0/un
 ix-print -I/usr/pkg/include/gdkmm-3.0 -I/usr/pkg/lib/gdkmm-3.0/include 
-D_REENTRANT -pthread -g -O2 -L/usr/pkg/lib -lgtkmm-3.0 -latkmm-1.6 -lgdkmm-3.0 
-lgiomm-2.4 -lpangomm-1.4 -lglibmm-2.4 -lgtk-3 -lgdk-3 -lpangocairo-1.0 
-lpango-1.0 -latk-1.0 -lcairo-gobject -lgio-2.0 -lcairomm-1.0 -lcairo 
-lsigc-2.0 -lgdk_pixbuf-2.0 -lgobject-2.0 -Wl,-R/usr/pkg/lib -lglib-2.0 -lintl  
 -o app app-app.o  
  ld: warning: libintl.so.1, needed by /usr/pkg/lib/libgtkmm-3.0.so, may 
conflict with libintl.so.8
  $

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gtkmm3.0/+bug/1611069/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to