Size: 1427
Comment:
|
Size: 1973
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 3: | Line 3: |
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): | 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 dir with a corresponding {{{*.pc}}} file. If that is the case you can easily set these variables by typing (tcsh): |
Line 6: | Line 6: |
> setenv CFLAGS `"pkg-config --cflags PACKAGE-NAME"` | > setenv CFLAGS "`pkg-config --cflags PACKAGE-NAME`" |
Line 11: | Line 11: |
> setenv LDLAGS `"pkg-config --libs PACKAGE-NAME"` | > setenv LDLAGS "`pkg-config --libs PACKAGE-NAME`" |
Line 13: | Line 13: |
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. | where {{{PACKAGE-NAME}}} is the package you need. However, by default {{{pkg-config}}} looks for {{{*.pc}}} files contained in {{{/usr/lib/pkgconfig}}} only. If you need {{{pkg-config}}} to search another path as well 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. Here is an example setting two additional paths: {{{ > setenv PKG_CONFIG_PATH "path1-to-*.pc-files:path2-to-*.pc-files" }}} |
Line 17: | Line 21: |
Remark: Paths contained in {{{$PKG_CONFIG_PATH}}} are preferred over the default paths by {{{pkg-config}}}. | 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 in {{{/usr/lib/pkgconfig}}} will not be considered. |
Line 24: | Line 28: |
type {{{man pkg-config}}} fore further information. | type {{{man pkg-config}}} for further information. |
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 dir with a corresponding *.pc file. If that is the case you can easily set these variables by typing (tcsh):
> setenv CFLAGS "`pkg-config --cflags PACKAGE-NAME`"
and
> setenv LDLAGS "`pkg-config --libs PACKAGE-NAME`"
where PACKAGE-NAME is the package you need. However, by default pkg-config looks for *.pc files contained in /usr/lib/pkgconfig only. If you need pkg-config to search another path as well 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. Here is an example setting two additional paths:
> setenv 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 in /usr/lib/pkgconfig will not be considered.
Here is an example (again in tcsh):
> setenv CFLAGS `"pkg-config --cflags gtk+-2.0"`
type man pkg-config for further information.