Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PKG_CONFIG_PATH variable, how to set LDFLAGS and CPPFLAGS when compiling RRDtool

Tags:

compilation

The mission is install rrdtool on Red Hat derivate and yum or packages are forbidden. Compiling all dependencies for rrdtool from source into separate directory: /apps/run/sepatare_folder

So basicaly all i have looks like this:

ls
cairo        glib         pango        pixman
--
pwd
/apps/run

After compiling four dependencies rrdtool complains during ./configure --prefix=/apps/run/rrdtool

Compiler cannot find libs [because i compliled them into separate folder not the standard as this is prohibited]

All warings are as follows:

Find 3rd-Party Libraries
checking dbi/dbi.h usability... no
checking dbi/dbi.h presence... no
checking for dbi/dbi.h... no
checking tcpd.h usability... no
checking tcpd.h presence... no
checking for tcpd.h... no
checking for cairo_font_options_create in -lcairo... no
checking for pkg-config... pkg-config
configure: WARNING:
----------------------------------------------------------------------------
* I found a copy of pkgconfig, but there is no cairo-png.pc file around.
  You may want to set the PKG_CONFIG_PATH variable to point to its
  location.
----------------------------------------------------------------------------

configure: WARNING:
----------------------------------------------------------------------------
* I could not find a working copy of cairo-png. Check config.log for hints on why
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
  so that compiler and the linker can find libcairo and its header files. If
  you have not installed cairo-png, you can get it either from its original home on

     http://cairographics.org/releases/

  You can find also find an archive copy on

     http://oss.oetiker.ch/rrdtool/pub/libs

  The last tested version of cairo-png is 1.10.2.

       LIBS=-lm
   LDFLAGS=
  CPPFLAGS=

----------------------------------------------------------------------------

checking for cairo_svg_surface_create in -lcairo... no
checking for pkg-config... (cached) pkg-config
configure: WARNING:
----------------------------------------------------------------------------
* I found a copy of pkgconfig, but there is no cairo-svg.pc file around.
  You may want to set the PKG_CONFIG_PATH variable to point to its
  location.
----------------------------------------------------------------------------

configure: WARNING:
----------------------------------------------------------------------------
* I could not find a working copy of cairo-svg. Check config.log for hints on why
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
  so that compiler and the linker can find libcairo and its header files. If
  you have not installed cairo-svg, you can get it either from its original home on

     http://cairographics.org/releases/

  You can find also find an archive copy on

     http://oss.oetiker.ch/rrdtool/pub/libs

  The last tested version of cairo-svg is 1.10.2.

       LIBS=-lm
   LDFLAGS=
  CPPFLAGS=

----------------------------------------------------------------------------

checking for cairo_pdf_surface_create in -lcairo... no
checking for pkg-config... (cached) pkg-config
configure: WARNING:
----------------------------------------------------------------------------
* I found a copy of pkgconfig, but there is no cairo-pdf.pc file around.
  You may want to set the PKG_CONFIG_PATH variable to point to its
  location.
----------------------------------------------------------------------------

configure: WARNING:
----------------------------------------------------------------------------
* I could not find a working copy of cairo-pdf. Check config.log for hints on why
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
  so that compiler and the linker can find libcairo and its header files. If
  you have not installed cairo-pdf, you can get it either from its original home on

     http://cairographics.org/releases/

  You can find also find an archive copy on

     http://oss.oetiker.ch/rrdtool/pub/libs

  The last tested version of cairo-pdf is 1.10.2.

       LIBS=-lm
   LDFLAGS=
  CPPFLAGS=

----------------------------------------------------------------------------

checking for cairo_ps_surface_create in -lcairo... no
checking for pkg-config... (cached) pkg-config
configure: WARNING:
----------------------------------------------------------------------------
* I found a copy of pkgconfig, but there is no cairo-ps.pc file around.
  You may want to set the PKG_CONFIG_PATH variable to point to its
  location.
----------------------------------------------------------------------------

configure: WARNING:
----------------------------------------------------------------------------
* I could not find a working copy of cairo-ps. Check config.log for hints on why
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
  so that compiler and the linker can find libcairo and its header files. If
  you have not installed cairo-ps, you can get it either from its original home on

     http://cairographics.org/releases/

  You can find also find an archive copy on

     http://oss.oetiker.ch/rrdtool/pub/libs

  The last tested version of cairo-ps is 1.10.2.

       LIBS=-lm
   LDFLAGS=
  CPPFLAGS=

----------------------------------------------------------------------------

checking for pango_cairo_context_set_font_options in -lpangocairo-1.0... no
checking for pkg-config... (cached) pkg-config
configure: WARNING:
----------------------------------------------------------------------------
* I found a copy of pkgconfig, but there is no pangocairo.pc file around.
  You may want to set the PKG_CONFIG_PATH variable to point to its
  location.
----------------------------------------------------------------------------

configure: WARNING:
----------------------------------------------------------------------------
* I could not find a working copy of pangocairo. Check config.log for hints on why
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
  so that compiler and the linker can find libpangocairo-1.0 and its header files. If
  you have not installed pangocairo, you can get it either from its original home on

     http://ftp.gnome.org/pub/GNOME/sources/pango/1.28

  You can find also find an archive copy on

     http://oss.oetiker.ch/rrdtool/pub/libs

  The last tested version of pangocairo is 1.28.4.

       LIBS=-lm
   LDFLAGS=
  CPPFLAGS=

----------------------------------------------------------------------------

checking for glib_check_version in -lglib-2.0... no
checking for pkg-config... (cached) pkg-config
configure: WARNING:
----------------------------------------------------------------------------
* I found a copy of pkgconfig, but there is no glib-2.0.pc file around.
  You may want to set the PKG_CONFIG_PATH variable to point to its
  location.
----------------------------------------------------------------------------

configure: WARNING:
----------------------------------------------------------------------------
* I could not find a working copy of **glib-2.0**. Check config.log for hints on why
  this is the case. Maybe you need to set LDFLAGS and CPPFLAGS appropriately
  so that compiler and the linker can find libglib-2.0 and its header files. If
  you have not installed glib-2.0, you can get it either from its original home on

     ftp://ftp.gtk.org/pub/glib/2.28/

  You can find also find an archive copy on

     http://oss.oetiker.ch/rrdtool/pub/libs

  The last tested version of glib-2.0 is 2.28.7.

       LIBS=-lm
   LDFLAGS=
  CPPFLAGS=

----------------------------------------------------------------------------

checking for xmlParseFile in -lxml2... yes
checking libxml/parser.h usability... yes
checking libxml/parser.h presence... yes
checking for libxml/parser.h... yes
configure: error: Please fix the library issues listed above and try again.

I do have all missing libraries, but need to tell compiler how to find them is a big pain. For example missing glib-2.0 is here:

pwd
/apps/run/glib/lib
ls -la
total 2300
drwxr-xr-x 4 root root    4096 May  3 08:18 .
drwxr-xr-x 6 root root    4096 May  3 08:17 ..
drwxr-xr-x 3 root root    4096 May  3 08:17 glib-2.0
-rwxr-xr-x 1 root root     928 May  3 08:18 libgio-2.0.la
lrwxrwxrwx 1 root root      19 May  3 08:18 libgio-2.0.so -> libgio-2.0.so.0.0.0
lrwxrwxrwx 1 root root      19 May  3 08:18 libgio-2.0.so.0 -> libgio-2.0.so.0.0.0
-rwxr-xr-x 1 root root  712052 May  3 08:18 libgio-2.0.so.0.0.0
-rwxr-xr-x 1 root root     830 May  3 08:17 libglib-2.0.la
lrwxrwxrwx 1 root root      23 May  3 08:17 libglib-2.0.so -> libglib-2.0.so.0.1504.0
lrwxrwxrwx 1 root root      23 May  3 08:17 libglib-2.0.so.0 -> libglib-2.0.so.0.1504.0
-rwxr-xr-x 1 root root 1168721 May  3 08:17 libglib-2.0.so.0.1504.0
-rwxr-xr-x 1 root root     887 May  3 08:18 libgmodule-2.0.la
lrwxrwxrwx 1 root root      26 May  3 08:18 libgmodule-2.0.so -> libgmodule-2.0.so.0.1504.0
lrwxrwxrwx 1 root root      26 May  3 08:18 libgmodule-2.0.so.0 -> libgmodule-2.0.so.0.1504.0
-rwxr-xr-x 1 root root   16107 May  3 08:18 libgmodule-2.0.so.0.1504.0
-rwxr-xr-x 1 root root     882 May  3 08:18 libgobject-2.0.la
lrwxrwxrwx 1 root root      26 May  3 08:18 libgobject-2.0.so -> libgobject-2.0.so.0.1504.0
lrwxrwxrwx 1 root root      26 May  3 08:18 libgobject-2.0.so.0 -> libgobject-2.0.so.0.1504.0
-rwxr-xr-x 1 root root  378273 May  3 08:18 libgobject-2.0.so.0.1504.0
-rwxr-xr-x 1 root root     897 May  3 08:18 libgthread-2.0.la
lrwxrwxrwx 1 root root      26 May  3 08:18 libgthread-2.0.so -> libgthread-2.0.so.0.1504.0
lrwxrwxrwx 1 root root      26 May  3 08:18 libgthread-2.0.so.0 -> libgthread-2.0.so.0.1504.0
-rwxr-xr-x 1 root root   24126 May  3 08:18 libgthread-2.0.so.0.1504.0
drwxr-xr-x 2 root root    4096 May  3 08:17 pkgconfig

There are nice advices but unfortunatly i cannot understand them:

  • You may want to set the PKG_CONFIG_PATH variable to point to its location.
  • Maybe you need to set LDFLAGS and CPPFLAGS appropriately so that compiler and the linker can find libglib-2.0 and its header files.

Not skilled enought to set PKG_CONFIG_PATH to include the directory where multiple required libs [ for example glib-2.0.pc, cairo-ps, cairo-png,..] can be found. Tried something like this:

export LD_LIBRARY_PATH=/apps/run/glib/lib;export LD_LIBRARY_PATH=/apps/run//apps/run/cairo/lib

but not working. Also not sure if this will be suficient as there are advices about seting LDFLAGS and CPPFLAGS appropriately. Tried this:

export LDFLAGS='-L/apps/run/cairo/libs'

but it doesnt seems to be correct. Or shloud i specify LDFLAGS and CPPFLAGS as part of the ./configure ? What the syntax should be? Please advice, looking for general howtos but not able to fit into my enviroment. Thx

like image 262
user1821820 Avatar asked May 03 '13 12:05

user1821820


1 Answers

To set paths, e.g. LD_LIBRARY_PATH of PKG_CONFIG_PATH, you should use a single export, and separate the paths using :. For example:

export PKG_CONFIG_PATH=/my/path:/my/other/path:/yet/another/path

Running mulitple exports after each other, like you showed for LD_LIBRARY_PATH will overwrite them, i.e. only the last one will be retained. Generally, it's wise to always include the current value (it's ok if it's empty):

export PKG_CONFIG_PATH=/my/path:/my/other/path:/yet/another/path:$PKG_CONFIG_PATH

Try finding the cairo-png.pc file on your system, and then set PKG_CONFIG_PATH to the directory it is contained in.

There should be no need to fiddle with LD_LIBRARY_PATH of LDFLAGS, the pkgconfig .pc file should take care of that for you.

like image 97
Kenneth Hoste Avatar answered Oct 14 '22 08:10

Kenneth Hoste