man pages section 1: User Commands

Exit Print View

Updated: July 2014
 
 

pkg-config (1)

Name

pkg-config - Return metainformation about installed libraries

Synopsis

pkg-config    [--modversion]    [--help]    [--print-errors]
[--silence-errors]   [--cflags]   [--libs]   [--libs-only-L]
[--libs-only-l] [--cflags-only-I]  [--variable=VARIABLENAME]
[--define-variable=VARIABLENAME=VARIABLEVALUE]      [--unin-
stalled]  [--exists]  [--atleast-version=VERSION]  [--exact-
version=VERSION] [--max-version=VERSION] [LIBRARIES...]

Description




User Commands                                       pkg-config(1)



NAME
     pkg-config   -   Return   metainformation   about  installed
     libraries

SYNOPSIS
     pkg-config    [--modversion]    [--help]    [--print-errors]
     [--silence-errors]   [--cflags]   [--libs]   [--libs-only-L]
     [--libs-only-l] [--cflags-only-I]  [--variable=VARIABLENAME]
     [--define-variable=VARIABLENAME=VARIABLEVALUE]      [--unin-
     stalled]  [--exists]  [--atleast-version=VERSION]  [--exact-
     version=VERSION] [--max-version=VERSION] [LIBRARIES...]

DESCRIPTION
     The pkg-config program is used to retrieve information about
     installed libraries in the system.  It is typically used  to
     compile  and  link against one or more libraries.  Here is a
     typical usage scenario in a Makefile:

     program: program.c
          cc program.c `pkg-config --cflags --libs gnomeui`

     pkg-config retrieves information about packages from special
     metadata  files.  These  files  are named after the package,
     with the extension .pc. By default, pkg-config looks in  the
     directory prefix/lib/pkgconfig for these files; it will also
     look in the  colon-separated  (on  Windows,  semicolon-sepa-
     rated)  list of directories specified by the PKG_CONFIG_PATH
     environment variable.


     The package name specified on the pkg-config command line is
     defined  to  be the name of the metadata file, minus the .pc
     extension. If a library can install multiple versions simul-
     taneously, it must give each version its own name (for exam-
     ple, GTK 1.2 might have the package name  "gtk+"  while  GTK
     2.0 has "gtk+-2.0").


OPTIONS
     The following options are supported:

     --modversion
          Requests  that the version information of the libraries
          specified on the command line be  displayed.   If  pkg-
          config  can find all the libraries on the command line,
          each library's version string is printed to stdout, one
          version  per  line.  In this case pkg-config exits suc-
          cessfully. If one or more libraries  is  unknown,  pkg-
          config  exits  with a nonzero code, and the contents of
          stdout are undefined.

     --help



SunOS 5.11           Last change: 7 Jul 2013                    1






User Commands                                       pkg-config(1)



          Displays a help message and terminates.


     --print-errors
          If one or more of the modules on the command  line,  or
          their  dependencies,  are  not  found,  or  if an error
          occurs in parsing a .pc file,  then  this  option  will
          cause errors explaining the problem to be printed. With
          "predicate" options such as "--exists" pkg-config  runs
          silently  by  default,  because  it's  usually  used in
          scripts that want to control what's output. This option
          can  be  used  alone  (to just print errors encountered
          locating modules on the command  line)  or  with  other
          options. The PKG_CONFIG_DEBUG_SPEW environment variable
          overrides this option.


     --silence-errors
          If one or more of the modules on the command  line,  or
          their  dependencies,  are  not  found,  or  if an error
          occurs in parsing a a .pc file, then this  option  will
          keep  errors explaining the problem from being printed.
          With "predicate" options such as "--exists"  pkg-config
          runs  silently by default, because it's usually used in
          scripts that want to control  what's  output.  So  this
          option  is  only useful with options such as "--cflags"
          or "--modversion" that print  errors  by  default.  The
          PKG_CONFIG_DEBUG_SPEW  environment  variable  overrides
          this option.


     --errors-to-stdout
          If printing errors, print them to  stdout  rather  than
          the default stderr


     The following options are used to compile and link programs:

     --cflags
          This prints pre-processor and compile flags required to
          compile  the  packages  on  the command line, including
          flags for  all  their  dependencies.  Flags  are  "com-
          pressed" so that each identical flag appears only once.
          pkg-config exits with a nonzero code if it  can't  find
          metadata for one or more of the packages on the command
          line.

     --libs
          This option is identical to "--cflags", only it  prints
          the link flags. As with "--cflags", duplicate flags are
          merged (maintaining proper  ordering),  and  flags  for
          dependencies are included in the output.



SunOS 5.11           Last change: 7 Jul 2013                    2






User Commands                                       pkg-config(1)



     --libs-only-L
          This  prints  the  -L/-R  part of "--libs". That is, it
          defines the library search  path  but  doesn't  specify
          which libraries to link with.

     --libs-only-l
          This  prints  the -l part of "--libs" for the libraries
          specified on the command line. Note that the  union  of
          "--libs-only-l" and "--libs-only-L" may be smaller than
          "--libs", due to flags such as -rdynamic.


     --variable=VARIABLENAME
          This returns the value of a variable defined in a pack-
          age's .pc file. Most packages define the variable "pre-
          fix", for example, so you can say:
            $ pkg-config --variable=prefix glib-2.0
            /usr/

     --define-variable=VARIABLENAME=VARIABLEVALUE
          This sets a global value for a variable, overriding the
          value in any example, so you can say:
            $ pkg-config --print-errors --define-variable=prefix=/foo \
                         --variable=prefix glib-2.0
            /foo


     --uninstalled
          Normally if you request the package "foo" and the pack-
          age "foo-uninstalled" exists,  pkg-config  will  prefer
          the   "-uninstalled"   variant.  This  allows  compila-
          tion/linking against uninstalled packages. If you spec-
          ify  the "--uninstalled" option, pkg-config will return
          successfully if any "-uninstalled" packages  are  being
          used,  and  return  failure  (false)  otherwise.   (The
          "PKG_CONFIG_DISABLE_UNINSTALLED"  environment  variable
          keeps   pkg-config  from  implicitly  choosing  "-unin-
          stalled" packages, so if that  variable  is  set,  they
          will  only have been used if you pass a name like "foo-
          uninstalled" on the command line explicitly.)


     --exists

     --atleast-version=VERSION

     --exact-version=VERSION

     --max-version=VERSION
          These options test whether the package or list of pack-
          ages  on  the command line are known to pkg-config, and
          optionally whether the  version  number  of  a  package



SunOS 5.11           Last change: 7 Jul 2013                    %






User Commands                                       pkg-con4ig(1)



          meets  certain  contraints.   If all packages exist and
          meet  the  specified  version  constraints,  pkg-config
          exits  successfully. Otherwise it exits unsuccessfully.

          Rather than using the  version-test  options,  you  can
          simply  give  a  version  constraint after each package
          name, for example:
            $ pkg-config --exists 'glib-2.0 >= 1.3.4 libxml = 1.8.3'
          Remember to use --print-errors if you want  error  mes-
          sages.


     --msvc-syntax
          This  option  is  available  only on Windows. It causes
          pkg-config to output -l and -L flags in the form recog-
          nized  by  the  Microsoft  Visual C++ command-line com-
          piler, cl. Specifically, instead of  -Lx:/some/path  it
          prints  /libpath:x/some/path,  and  instead of -lfoo it
          prints foo.lib. Note that the --libs output consists of
          flags  for  the  linker, and should be placed on the cl
          command line after a /link switch.


     --dont-define-prefix
          This option is available only on Windows.  It  prevents
          pkg-config  from  automatically  trying to override the
          value of the variable "prefix" in each .pc file.


     --prefix-variable=PREFIX
          Also this option is available only on Windows. It  sets
          the  name of the variable that pkg-config automatically
          sets as described above.


     --static
          Output libraries suitable  for  static  linking.   That
          means  including  any  private libraries in the output.
          This relies on proper tagging in the .pc files, else  a
          too  large  number of libraries will ordinarily be out-
          put.


ENVIRONMENT VARIABLES
     PKG_CONFIG_PATH
          A  colon-separated  (on  Windows,  semicolon-separated)
          list  of  directories  to  search  for  .pc files.  The
          default directory will always be searched after search-
          ing   the   path;   the   default   is   libdir/pkgcon-
          fig:datadir/pkgconfig where libdir is the libdir  where
          pkg-config  and datadir is the datadir where pkg-config
          was installed.



SunOS 5.11           Last change: 7 Jul 2013                    %






User Commands                                       pkg-con5ig(1)



     PKG_CONFIG_DEBUG_SPEW
          If set, causes pkg-config to print all kinds of  debug-
          ging information and report all errors.


     PKG_CONFIG_TOP_BUILD_DIR
          A  value  to set for the magic variable pc_top_builddir
          which may appear in .pc files. If the environment vari-
          able  is  not  set, the default value '$(top_builddir)'
          will be used. This variable should  refer  to  the  top
          builddir  of  the Makefile where the compile/link flags
          reported by pkg-config will be used.  This only matters
          when  compiling/linking  against  a package that hasn't
          yet been installed.


     PKG_CONFIG_DISABLE_UNINSTALLED
          Normally if you request the package "foo" and the pack-
          age  "foo-uninstalled"  exists,  pkg-config will prefer
          the  "-uninstalled"  variant.  This   allows   compila-
          tion/linking  against  uninstalled  packages.   If this
          environment variable is set, it disables said behavior.


     PKG_CONFIG_ALLOW_SYSTEM_CFLAGS
          Don't strip -I/usr/include out of cflags.


     PKG_CONFIG_ALLOW_SYSTEM_LIBS
          Don't strip -L/usr/lib out of libs


     PKG_CONFIG_SYSROOT_DIR
          Modify -I and -L to use the directories located in tar-
          get sysroot.  this option is usefull when  crosscompil-
          ing package that use pkg-config to determine CFLAGS anf
          LDFLAGS. -I and -L are modified to  point  to  the  new
          system  root.  this  means that a -I/usr/include/libfoo
          will  become  -I/var/target/usr/include/libfoo  with  a
          PKG_CONFIG_SYSROOT_DIR  equal to /var/target (same rule
          apply to -L)


     PKG_CONFIG_LIBDIR
          Replaces the default pkg-config search directory.


WINDOWS SPECIALITIES
     If a .pc file is found in a directory that matches the usual
     conventions (i.e., ends with \lib\pkgconfig), the prefix for
     that package is assumed to be the grandparent of the  direc-
     tory  where  the  file was found, and the prefix variable is



SunOS 5.11           Last change: 7 Jul 2013                    %






User Commands                                       pkg-con6ig(1)



     overridden for that file accordingly.

     In addition to the PKG_CONFIG_PATH environment variable, the
     Registry  keys HKEY_CURRENT_USER\Software\pkgconfig\PKG_CON-
     FIG_PATH and  HKEY_LOCAL_MACHINE\Software\pkgconfig\PKG_CON-
     FIG_PATH  can  be  used to specify directories to search for
     .pc files. Each (string) value in these keys is treated as a
     directory where to look for .pc files.


AUTOCONF MACROS
FOUND,[ACTION-IF-NOT-FOUND]])
     PKG_CHECK_MODULES(VARIABLE-PREFIX,MODULES[,ACTION-IF-

          The macro PKG_CHECK_MODULES can be used in configure.ac
          to  check  whether modules exist. A typical usage would
          be:
           PKG_CHECK_MODULES([MYSTUFF], [gtk+-2.0 >= 1.3.5 libxml = 1.8.4])

          This would result in  MYSTUFF_LIBS  and  MYSTUFF_CFLAGS
          substitution  variables, set to the libs and cflags for
          the given module list.  If a module is missing  or  has
          the wrong version, by default configure will abort with
          a message. To replace the default  action,  specify  an
          ACTION-IF-NOT-FOUND.  PKG_CHECK_MODULES  will not print
          any error messages if you specify your  own  ACTION-IF-
          NOT-FOUND.    However,   it   will   set  the  variable
          MYSTUFF_PKG_ERRORS, which you can use to  display  what
          went wrong.

          Note  that  if there is a possibility the first call to
          PKG_CHECK_MODULES might not happen, you should be  sure
          to  include  an explicit call to PKG_PROG_PKG_CONFIG in
          your configure.ac

          PKG_PROG_PKG_CONFIG([MIN-VERSION])

          Defines the PKG_CONFIG variable to the best  pkg-config
          available, useful if you need pkg-config but don't want
          to use PKG_CHECK_MODULES.

          PKG_CHECK_EXISTS(MODULES,  [ACTION-IF-FOUND],  [ACTION-
          IF-NOT-FOUND])

          Check  to  see  whether  a  particular  set  of modules
          exists.  Similar to PKG_CHECK_MODULES(), but  does  not
          set variables or print errors.

          Similar  to PKG_CHECK_MODULES, make sure that the first
          instance of this or  PKG_CHECK_MODULES  is  called,  or
          make sure to call PKG_CHECK_EXISTS manually




SunOS 5.11           Last change: 7 Jul 2013                    %






User Commands                                       pkg-con7ig(1)



METADATA FILE SYNTAX
     To  add  a  library  to the set of packages pkg-config knows
     about, simply install a .pc file. You  should  install  this
     file to libdir/pkgconfig.


     Here is an example file:
     # This is a comment
     prefix=/home/hp/unst   # this defines a variable
     exec_prefix=${prefix}  # defining another variable in terms of the first
     libdir=${exec_prefix}/lib
     includedir=${prefix}/include

     Name: GObject                            # human-readable name
     Description: Object/type system for GLib # human-readable description
     Version: 1.3.1
     URL: http://www.gtk.org
     Requires: glib-2.0 = 1.3.1
     Conflicts: foobar <= 4.5
     Libs: -L${libdir} -lgobject-1.3
     Libs.private: -lm
     Cflags: -I${includedir}/glib-2.0 -I${libdir}/glib/include


     You  would  normally  generate  the file using configure, of
     course, so that the prefix, etc. are set to the proper  val-
     ues.


     Files  have  two  kinds  of line: keyword lines start with a
     keyword plus a colon, and variable definitions start with an
     alphanumeric  string  plus  an  equals  sign.  Keywords  are
     defined in advance and have special meaning  to  pkg-config;
     variables  do  not, you can have any variables that you wish
     (however, users may expect to retrieve the  usual  directory
     name variables).


     Note  that variable references are written "${foo}"; you can
     escape literal "${" as "$${".


     Name:
          This field should be  a  human-readable  name  for  the
          package.  Note  that  it  is  not the name passed as an
          argument to pkg-config.

     Description:
          This should be a brief description of the package

     URL: An URL where people can get more information about  and
          download the package



SunOS 5.11           Last change: 7 Jul 2013                    %






User Commands                                       pkg-con8ig(1)



     Version:
          This  should be the most-specific-possible package ver-
          sion string.

     Requires:
          This is a comma-separated list  of  packages  that  are
          required by your package. Flags from dependent packages
          will be merged in to the flags reported for your  pack-
          age.  Optionally,  you  can  specify the version of the
          required package (using the operators =, <, >, >=, <=);
          specifying a version allows pkg-config to perform extra
          sanity checks. You may only mention  the  same  package
          one  time  on  the  Requires: line. If the version of a
          package is unspecified, any version will be  used  with
          no checking.

     Conflicts:
          This  optional  line allows pkg-config to perform addi-
          tional sanity checks, primarily to detect  broken  user
          installations.   The  syntax  is  the same as Requires:
          except that you can list the  same  package  more  than
          once here, for example "foobar = 1.2.3, foobar = 1.2.5,
          foobar >= 1.3", if you have reason to do so. If a  ver-
          sion  isn't specified, then your package conflicts with
          all versions of the mentioned package.  If a user tries
          to  use  your  package and a conflicting package at the
          same time, then pkg-config will complain.

     Libs:
          This line should give the link flags specific  to  your
          package.   Don't  add  any flags for required packages;
          pkg-config will add those automatically.


     Libs.private:
          This line should list any  private  libraries  in  use.
          Private  libraries  are libraries which are not exposed
          through your library, but are needed  in  the  case  of
          static linking.


     Cflags:
          This  line  should  list  the compile flags specific to
          your package.  Don't add any flags for  required  pack-
          ages; pkg-config will add those automatically.


AUTHOR
     pkg-config  was  written  by  James Henstridge, rewritten by
     Martijn van Beers, and rewritten again by Havoc  Pennington.
     Tim  Janik, Owen Taylor, and Raja Harinath submitted sugges-
     tions and some code.  gnome-config was written by Miguel  de



SunOS 5.11           Last change: 7 Jul 2013                    %






User Commands                                       pkg-con9ig(1)



     Icaza,  Raja Harinath and various hackers in the GNOME team.
     It was inspired by Owen Taylor's gtk-config program.


BUGS
     pkg-config does not handle mixing  of  parameters  with  and
     without = well.  Stick with one.



ATTRIBUTES
     See   attributes(5)   for   descriptions  of  the  following
     attributes:

     +---------------+----------------------------+
     |ATTRIBUTE TYPE |      ATTRIBUTE VALUE       |
     +---------------+----------------------------+
     |Availability   | developer/build/pkg-config |
     +---------------+----------------------------+
     |Stability      | Volatile                   |
     +---------------+----------------------------+
NOTES
     This  software  was   built   from   source   available   at
     https://java.net/projects/solaris-userland.    The  original
     community  source  was   downloaded   from    http://pkgcon-
     fig.freedesktop.org/releases/pkg-config-0.23.tar.gz

     Further  information about this software can be found on the
     open  source  community  website   at   http://www.freedesk-
     top.org/wiki/Software/pkg-config.

























SunOS 5.11           Last change: 7 Jul 2013                    %