Reputation: 6526
While building a dbus-example, I found that we need to add a pkg-config in gcc. For example:
gcc `pkg-config --cflags --libs dbus-1` <file_name> -o <file_name.out>
What is the significance of pkg-config --cflags --libs dbus-1
? what is pkg-config here? what is cflags extra here? what is --libs
here?
Upvotes: 25
Views: 22293
Reputation: 2890
gcc `pkg-config --cflags --libs dbus-1` <file_name> -o <file_name.out>
will run the pkg-config
command, and pass its output as parameters to gcc.
The purpose of pkg-config
is to make linking against libraries much easier, as different operating systems and distributions require different compilation flags (aka CFLAGS
), library inclusion paths and libraries to link to. pkg-config
uses configuration files (defined by the libraries) to generate the above information for compilers, and allows us to not worry about what operating system or distribution the compilation takes place on.
--cflags
means the pkg-config
should give the compilation flags for the listed packages.
--libs
means the pkg-config
should give the linking information for the listed packages.
and dbus-1
is the name of the package.
Upvotes: 33
Reputation: 40972
gcc `pkg-config --cflags --libs dbus-1` <file_name> -o <file_name.out>
comprises these parts:
pkg-config --cflags --libs dbus-1
note `` run the command in between.gcc
with the flags 1. returns and an input file <file_name>
output object file .Upvotes: 2