Size: 1427
Comment:
|
Size: 2000
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
#rev 2020-09-10 bonaccos |
|
Line 2: | Line 5: |
= Using pkg-config to set variables = When compiling software from source you might need to set variables such as {{{$CFLAGS}}} or {{{$LDFLAGS}}}. Here the {{{pkg-config}}} command comes handy. You can easily set this variables by typing (tcsh): |
== Using pkg-config to set variables == When compiling software from source you might need to set variables such as `CFLAGS` or `LDFLAGS`. Here the `pkg-config` command comes handy. Nevertheless, `pkg-config` only works with libraries supporting `pkg-config`, meaning that there is a '''/pkgconfig''' sub-directory in the library directory with a corresponding `*.pc` file. If that is the case you can easily set these variables by typing (bash): |
Line 6: | Line 11: |
> setenv CFLAGS `"pkg-config --cflags PACKAGE-NAME"` | export CFLAGS="`pkg-config --cflags PACKAGE-NAME`" |
Line 11: | Line 16: |
> setenv LDLAGS `"pkg-config --libs PACKAGE-NAME"` | export LDLAGS="`pkg-config --libs PACKAGE-NAME`" |
Line 13: | Line 18: |
where {{{PACKAGE-NAME}}} is the package you need. However, {{{pkg-config}}} looks for packages contained in the {{{$PATH}}} variable only. If you need {{{pkg-config}}} to search in a non default path you may set the {{{$PKG_CONFIG_PATH}}} variable accordingly. This variable must contain paths leading to a directory containing {{{*.pc}}} files. Very often a package comes with a {{{pkg-config}}} directory containing the corresponding {{{*.pc}}} files. You may set multiple paths in the {{{$PKG_CONFIG_PATH}}} variable using {{{:}}} as separator. | |
Line 15: | Line 19: |
It is important to note that the {{{--libs}}} option sometimes only returns the link time directory, omitting the run time directory. Therefore, you might have to correct the {{{LDFLAGS}}} variable accordingly. | where '''PACKAGE-NAME''' is the package you need. However, by default `pkg-config` looks for '''*.pc''' files in system defined paths only. If you need `pkg-config` to search another path as well you may set the `PKG_CONFIG_PATH` variable accordingly. This variable contain paths leading to a directory containing `*.pc'` files. A package might come with a `pkg-config` directory containing the corresponding `*.pc` files. You may set multiple paths in the `PKG_CONFIG_PATH` variable using colon (`:`) as separator. |
Line 17: | Line 21: |
Remark: Paths contained in {{{$PKG_CONFIG_PATH}}} are preferred over the default paths by {{{pkg-config}}}. Here is an example (again in tcsh): |
Here is an example setting two additional paths: |
Line 22: | Line 24: |
> setenv CFLAGS `"pkg-config --cflags gtk+-2.0"` | export PKG_CONFIG_PATH="path1-to-*.pc-files:path2-to-*.pc-files" |
Line 24: | Line 26: |
type {{{man pkg-config}}} fore further information. | It is important to note that the `--libs` option sometimes only returns the link time directory, omitting the run time directory. Therefore, you might have to correct the `LDFLAGS` variable accordingly. Remark: Paths contained in `PKG_CONFIG_PATH` are preferred over the default path by `pkg-config`. This means if a corresponding `*.pc` file is found in the `PKG_CONFIG_PATH` directories, a `*.pc` with the same name for instance in `/usr/lib/pkgconfig` will not be considered. Here is an example: {{{ export CFLAGS=`"pkg-config --cflags gtk+-2.0"` }}} More details can be found in the [[https://manpages.debian.org/buster/pkgconf/pkg-config.1.en.html|pkg-config(1) manpage]]. ---- [[CategoryLXSW]] |
PKG-CONFIG
Using pkg-config to set variables
When compiling software from source you might need to set variables such as CFLAGS or LDFLAGS. Here the pkg-config command comes handy. Nevertheless, pkg-config only works with libraries supporting pkg-config, meaning that there is a /pkgconfig sub-directory in the library directory with a corresponding *.pc file. If that is the case you can easily set these variables by typing (bash):
export CFLAGS="`pkg-config --cflags PACKAGE-NAME`"
and
export LDLAGS="`pkg-config --libs PACKAGE-NAME`"
where PACKAGE-NAME is the package you need. However, by default pkg-config looks for *.pc files in system defined paths only. If you need pkg-config to search another path as well you may set the PKG_CONFIG_PATH variable accordingly. This variable contain paths leading to a directory containing *.pc' files. A package might come with a pkg-config directory containing the corresponding *.pc files. You may set multiple paths in the PKG_CONFIG_PATH variable using colon (:) as separator.
Here is an example setting two additional paths:
export PKG_CONFIG_PATH="path1-to-*.pc-files:path2-to-*.pc-files"
It is important to note that the --libs option sometimes only returns the link time directory, omitting the run time directory. Therefore, you might have to correct the LDFLAGS variable accordingly.
Remark: Paths contained in PKG_CONFIG_PATH are preferred over the default path by pkg-config. This means if a corresponding *.pc file is found in the PKG_CONFIG_PATH directories, a *.pc with the same name for instance in /usr/lib/pkgconfig will not be considered.
Here is an example:
export CFLAGS=`"pkg-config --cflags gtk+-2.0"`
More details can be found in the pkg-config(1) manpage.