Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what is the significance of pkg-config in gcc?

Tags:

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 --libshere?

like image 680
dexterous Avatar asked Dec 06 '13 05:12

dexterous


People also ask

What is pkg-config used for?

pkg-config is a helper tool used when compiling applications and libraries. It helps you insert the correct compiler options on the command line so an application can use gcc -o test test. c `pkg-config --libs --cflags glib-2.0` for instance, rather than hard-coding values on where to find glib (or other libraries).

Where are pkg-config files?

On most systems, pkg-config looks in /usr/lib/pkgconfig , /usr/share/pkgconfig , /usr/local/lib/pkgconfig and /usr/local/share/pkgconfig for these files. It will additionally look in the colon-separated (on Windows, semicolon-separated) list of directories specified by the PKG_CONFIG_PATH environment variable.

What are package config files?

The packages. config file is used in some project types to maintain the list of packages referenced by the project. This allows NuGet to easily restore the project's dependencies when the project is to be transported to a different machine, such as a build server, without all those packages. If used, packages.


1 Answers

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.

like image 178
cyphar Avatar answered Oct 04 '22 01:10

cyphar