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 : [email protected]
Unsubscribe : https://launchpad.net/~desktop-packages
More help : https://help.launchpad.net/ListHelp