Hlavičkový obrázek pro články C/C++

Vývoj GTK+ aplikací

Pro základní vývoj aplikcí pomocí GTK je nutné mít nainstalovanou knihovnu libgtk-3-dev. Oproti té se pak bude vyvíjená aplikace překládat a linkovat.

Překlad i s linkováním lze provést pomocí následujícího příkazu.

$ gcc foo.c -o foo `pkg-config --cflags --libs gtk+-3.0`

Platí zde jedno velké upozornění – sekce pkg-config musí vždy být až na konci příkazu, jinak linkování selže. Pokud překlad selže způsobem podobným následujícímu, je vhodné provést pár základních kontrol.

foo.o: In function `main':
foo.c:(.text+0x1e): undefined reference to `gtk_init'
foo.c:(.text+0x28): undefined reference to `gtk_window_new'
foo.c:(.text+0x38): undefined reference to `gtk_widget_show_all'
foo.c:(.text+0x3d): undefined reference to `gtk_main'
collect2: error: ld returned 1 exit status
  1.  Ověřit přítomnost knihovny libgtk-3-dev v systému
  2. Ověřit správnost nakonfigurování pkg-config

Druhý bod se dá ověřit například tím, že se sekce pkg-config zavolá jako samostatný příkaz.

$ pkg-config --cflags --libs gtk+-3.0
-pthread -I/usr/include/gtk-3.0 -I/usr/include/atk-1.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/pixman-1 -I/usr/include/libpng12  -lgtk-3 -lgdk-3 -latk-1.0 -lgio-2.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo-gobject -lpango-1.0 -lcairo -lgobject-2.0 -lglib-2.0

 
V případě že vše funguje tak jak má, měl by výsledek být velmi podobný výše zmíněnému.


Posted

in

by

Tags: