The pkg-config is free software that supports different platforms, including Unix-like systems, Windows, Linux, and Mac OS X. To use pkg-config, you only need glib installed or a working C library and compiler. Let’s look at the common usage and understand pkg-config more in the sections below.”
Installing pkg-config
You can install pkg-config from the apt database:
First, update the apt database.
Next, install pkg-config.
pkg-config Description
pkg-config is a helper tool that mainly collects the metadata about installed libraries on computer systems and provides them to a user for easy assembling and integration. Each system has different libraries installed and to compile and link the libraries requires using pkg-config.
Furthermore, installing pkg-config alongside different packages makes it easy to adopt APIs in the case of developers. To be precise, pkg-config works by providing details necessary to compile and link programs to different libraries. Therefore, it fetches the metadata about the libraries instead of your hard coding on the terminal.
pkg-config Usage Examples
The metadata files that pkg-config retrieves information from have a .pc extension, and the name specified in the command is the metadata file.
1. Print the Link Flags
The –libs option is specified to display the link flags associated with a given package. In our example, we will use the OpenCV C++ library.
The displayed output link flags are:
2. Print Compile Flags
The –cflags prints the compile flags and the associated pre-processor required to compile a package plus the flags for its dependencies.
3. Get a Version of the Library
You can check the version of a library using the —modversion flag.
4. Print Errors
You can print an error message, such as a missing dependency or modules, using the command:
To print errors in the stdout instead of the default stderr, use the —errors-to-stdout option instead of the —print-errors.
5. Display Variables in a Package
To see all the variables included in a given package, use the —print-variables option:
It will output all the names of any variable contained in your package.
6. List Packages
To show all the packages that have a .pc extension on your system, use the –list-all option
The output contains all packages listed in the PKG_CONFIG_PATH variable path.
7. Get Variable Value
You can get the value of a variable declared in a package’s .pc file. Use the —variable=[variable-name] [name-of-package] as in the example below.
8. Define Variable
You can set a global variable value for a .pc file with pkg-config. For instance, to declare a variable named prefix in our OpenCV library, we can use the command:
9. Other Options
–help: it opens the help message for the pkg-config.
–debug: it shows the debug information.
–static: it displays libraries with static linking, including private libraries.
Format of pkg-config Files
If you have a module, in our case named sample, the module will have a .pc file that contains its metadata.
There is a specific format used with the modules. Furthermore, a module has particular keywords, including:
Name: it represents the name of the given library or package. In our case, it is a sample.
Description: it represents a description of the library or package.
Version: libraries have different versions, and the version is specified using this keyword.
URL: the URL links to an external place to download the library or get more details about its usage.
Requires: if the package requires other packages, they get specified here.
Libs: the link flags for the package
Cflags: the compiler flags associated with the package.
Conflicts: it highlights any packages that are likely to conflict with it.
Requires.private represents the required private packages not available to other applications.
Conclusion
The pkg-config Linux command offers many usage cases, and you can get more details about the tool from its manpage. We’ve covered most of its common usage cases to help you comfortably extract details of libraries and packages. That’s it, folks!