gcc options: pkg-config --libs --cflags gtk+-3.0 - c

I am trying to learn gtk and following this link : http://zetcode.com/gui/gtk2/firstprograms/ I was able to get a basic program to run. The way to compile the code was to use the command:
gcc -o simple simple.c `pkg-config --libs --cflags gtk+-3.0`
I want to understand what the flags pkg-config --libs --cflags gtk+-3.0 mean.
I tried searching the man page for the flags pkg-config, --libs and --cflags, but couldn't find them. I would feel fairly satisfied if I understood what that snippet of text inside the `` actually means.

To compile a program using GTK+ 3.0 you need to provide compile options to tell the compiler where to look for include files and library files.
You can either specify them directly with the appropriate compiler options.
Or you can use the flags that were configured when you installed the GTK+ packages.
These flags can be retrieved using pkg-config command.
Putting the command in `` causes the content to be executed and being replaced by the output of the command.
This will provide the compile flags (--cflags) and library options (--libs) needed to build your application.

Related

Clang doesn't link dependencies of GTK3 and Webkit2GTK

I'm making a simple web browser using GTK3 and Webkit2GTK. When compiling the program, it doesn't have any error, but when I try to run it, I got this error:
$ ./a.out
CANNOT LINK EXECUTABLE "./a.out": library "libGL.so" not found
I tried to compile the program with -lGL, but it throws another executable link error.
What did I doing wrong? This is my command:
clang main.c `pkg-config --cflags --libs gtk+-3.0 webkit2gtk-4.0`

Type fatal error: gtk/gtk.h: No such file or directory during Eclipse (Oxygen) compilation

I've some errors compiling C code with GTK widgets in Eclipse, indicating that gtk/gtk.h cannot be found. I've already installed GTK+2 and GTK+3; and also included the header paths for GTK but it seems that the Eclipse environment is still unable to find the required header.
Greatly appreciate any advice from the community!
You didn't provide enough information to actually know what is going on, but I guess the include paths you configured are somehow wrong.
My advice would be that you should use pkg-config to obtain the correct compiler flags instead of adding include dirs etc. manually.
This will give you a list of all packages, pkg-config knows are installed on your machine:
pkg-config --list-all
The GTK package should be something like gtk+-3.0
Use this to get the CFLAGS for use with GTK3:
pkg-config --cflags gtk+-3.0
And here is how to get the libraries for the linker stage:
pkg-config --libs gtk+-3.0
So instead of doing something like this:
# Don't do this
gcc -I... main.c
... use something like this:
gcc $(pkg-config --cflags gtk+-3.0) ... main.c
Read the man page of pkg-config for more informations.
There was an Eclipse plugin for pkg-config support, but it doesn't seem to work with Oxygen. I managed to get a building example with these settings, though Eclipse itself won't find the includes.

How to use kplot (Cairo plotting library) without installing it

kplot is a UNIX programming library for plotting graphs on a Cairo surface. The source code is available here.
After downloading the source code I extraced it to the directory kplot-master and cd into it. Simple ls now shows
array.c
border.c
bucket.c
buffer.c
....
example0.c
example1.c
....
I am using Ubuntu 14.04 LTS. Cairo is installed in my system and I tested it by successfully compiling C codes available in [zetcode dot com slash gfx slash cairo slash cairobackends slash] (Sorry as I am not allowed to link more than two).
I am new to GTK and Cairo plotting library and would like help in the following directions:
I do not want to install kplot in my system.
I just want to learn how kplot uses Cairo.
When I use the following command:
gcc example0.c -o example `pkg-config --cflags --libs gtk+-3.0`
it produces the following error message:
example0.c:17:20: fatal error: compat.h: No such file or directory
#include "compat.h"
^
compilation terminated.
It will be very helpful if somebody shows me how to test those kplot examples without installing it.
There is no need to install.
First you will need to compile the kplot library. For that, cd to the kplot directory and run a make command. This will generate the file compat.h. After that you will be able to compile example by example with make example(n) command, or with gcc example(n).c -o example(n) `pkg-config --cflags --libs gtk+-3.0` libkplot.a -lbsd -lm command.
If you have GTK+-3.0 and Cairo dev libraries installed, everything should go well.

Not able to compile GTK3+ program on windows

I am using MinGW and I have set the path for the same in the Environment Variables. I have also set the path for GTK in the Environment Variables.
MInGW has been set up successfully since I am able to use the gcc commands to compile regular C programs.
Even GTK has been set up successfully (confirmed by entering pkg-config --cflags gtk+-3.0 in cmd which prints out a list of variables and also ran a already compiled GTK application succesfully).
I have also set the path for pkgconfig in the Environment Variables.
Variable Name-PKG_CONFIG_PATH and Value-C:\gtk\lib\pkgconfig
Even after the complete set up, there are some errors which occur when I try compiling a GTK program.
Command used:
gcc hello.c -o hello 'pkg-config --cflags --libs gtk+-3.0'
Note: I have used ` in the actual command and not '(used ' here to prevent highlighting).
Errors:
pkg-config no such directory found.
gtk+-3.0 no such directory found
unrecognized command line option --cflags unrecognized command line
option --labs
Tools I tried:
Windows cmd
MingW Shell
MSYS2
Cygwin Terminal (I haven't set up Cygwin path in the environment variables to prevent errors between Cygwin and MingW)
Can someone help me in figuring out what's the actual issue even after completing all the set up steps I mentioned above? Please help me!
Forums I already checked out:
Compiling and running GTK+ application on Windows 7
http://www.tarnyko.net/repo/gtk3_build_system/tutorial/gtk3_tutorial.htm
And more...But nothing has helped me so far!
So I understand you have been using:
gcc hello.c -o hello `pkg-config --cflags --libs gtk+-3.0`
You appear to be trying to be clever with pkg-config. Have you tried using --libs & --cflags separately?
e.g.:
gcc `pkg-config --cflags gtk+-3.0` -o hello hello.c `pkg-config --libs gtk+-3.0`
For more info see here

GStreamer: No such file or directory

I am working on a project that I need to display video to a window. So I do some research and find out GStreamer lib is probably a good way to go since I have a GUI written with GTK. However, after 2 hours trying to install and compile GStream on my Mac, I still get:
error: gts/gts.h: No such file or directory
What I did is install Gstreamer SDK for Mac OS from the official website. Export path:
export PATH=/Library/Frameworks/GStreamer.framework/Version/0.10/Headers:$PATH
Compile:
gcc test.c `pkg-config --cflags --libs gtk+-2.0` `pkg-config --cflags --libs gtk-1.0`
But I have no luck!. Please help!!!
First of all: You can't specify GCC's include path using the PATH variable. Its sole purpose is for the shell (or to be more specific: for the various flavors of exec()) to find executables you want to run.
You might want to modify your gcc command line like that (gstreamer-0.10 instead of gst-0.10):
gcc test.c `pkg-config --cflags --libs gtk+-2.0 gtk-1.0 gstreamer-0.10`
If that still doesn't work, look at the output of the pkgconfig command (by running it alone):
pkg-config --cflags --libs gtk+-2.0 gtk-1.0 gstreamer-0.10
That should give you either a list of gcc flags or an error message that should help you resolve your issue.

Resources