How to compile C/C++ program with GStreamer
I'm trying to compile this code:
#include <stdio.h>
#include <stdlib.h>
#include <gst/gst.h>
int main (int argc,
char *argv[])
{
const gchar *nano_str;
guint major, minor, micro, nano;
gst_init (&argc, &argv);
gst_version (&major, &minor, µ, &nano);
if (nano == 1)
nano_str = "(CVS)";
else if (nano == 2)
nano_str = "(Prerelease)";
else
nano_str = "";
printf ("This program is linked against GStreamer %d.%d.%d %s\n",
major, minor, micro, nano_str);
return 0;
}
When I use this command in terminal:
libtool --mode=link gcc `pkg-config --cflags --libs gstreamer-1.0` -o main main.c
I get this error:
Package gstreamer-1.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gstreamer-1.0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'gstreamer-1.0' found
libtool: link: gcc -o main main.c
And this error:
main.c:3:21: fatal error: gst/gst.h: No such file or directory
But I have installed GStreamer 1.0 and libtool with apt-get. Do you have any ideas where should I start? I have dig whole Internet searching the answer and no one has the answer.
gst/gst.h
is provided by libgstreamer1.0-dev
. Install it:
sudo apt-get install libgstreamer1.0-dev
In Code::Blocks, you can set custom include locations and linker flags. In the Project menu, click on Build options:
For people using Eclipse you should do the followings to make the project from within Eclipse:
Right click the project name and select properties. Under C/C++ Build, select Settings.
-
Under Tool Settings, open GCC C complier and select miscellaneous. Add the following to other flags text box:
`pkg-config --cflags gstreamer-1.0` -fPIC
-
Under Tool Settings, open GCC C++ Linker and select miscellaneous. Add the following to linker flags text box:
`pkg-config --libs gstreamer-1.0 gobject-2.0 glib-2.0`
Under Tool Settings, open GCC C++ Linker and select Libraries. Add gstreamer-1.0, gobject-2.0 and glib-2.0 under Libraries section.
Your application should compile and link successfully then.