5

任务是在 Red Hat 衍生产品上安装 rrdtool,并且禁止使用 yum 或软件包。将 rrdtool 的所有依赖项从源代码编译到单独的目录中:/apps/run/sepatare_folder

所以基本上我所拥有的一切看起来像这样:

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

编译四个依赖项后,rrdtool 在 ./configure --prefix=/apps/run/rrdtool 期间抱怨

编译器找不到库 [因为我将它们编译到单独的文件夹中,而不是标准,因为这是被禁止的]

所有警告如下:

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.

我确实有所有缺少的库,但需要告诉编译器如何找到它们是一个很大的痛苦。例如缺少glib-2.0 在这里:

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

有很好的建议,但不幸的是我无法理解它们:

  • 您可能希望将 PKG_CONFIG_PATH 变量设置为指向其位置。
  • 也许您需要适当地设置 LDFLAGS 和 CPPFLAGS 以便编译器和链接器可以找到 libglib-2.0 及其头文件。

不够熟练地将PKG_CONFIG_PATH设置为包含可以找到多个所需库 [例如 glib-2.0.pc、cairo-ps、cairo-png、..] 的目录。尝试过这样的事情:

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

但不工作。也不确定这是否足够,因为有关于适当设置LDFLAGSCPPFLAGS的建议。试过这个:

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

但这似乎不正确。或者我应该将 LDFLAGS 和 CPPFLAGS 指定为 ./configure 的一部分?语法应该是什么?请建议,寻找一般的howtos,但不能适应我的环境。谢谢

4

1 回答 1

9

要设置路径,例如LD_LIBRARY_PATHof PKG_CONFIG_PATH,您应该使用单个export,并使用 分隔路径:。例如:

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

一个接一个地运行多个导出,就像你展示的那样,LD_LIBRARY_PATH将覆盖它们,即只保留最后一个。一般来说,总是包含当前值是明智的(如果它是空的也没关系):

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

尝试cairo-png.pc在您的系统上查找该文件,然后将其设置PKG_CONFIG_PATH为它所在的目录。

不需要摆弄LD_LIBRARY_PATHof LDFLAGS, pkgconfig.pc文件应该会为您处理好。

于 2013-05-20T08:28:54.397 回答