compilation - PKG_CONFIG_PATH变量,编译RRDtool时如何设置LDFLAGS和CPPFLAGS

标签 compilation

任务是在 Red Hat derivate 上安装 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

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

  • 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.


不够熟练设置 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

但不工作。
也不确定这是否足够,因为有关于设置 的建议LDFLAGS CPPFLAGS 适本地。
试过这个:
export LDFLAGS='-L/apps/run/cairo/libs'

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

最佳答案

设置路径,例如LD_LIBRARY_PATHPKG_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_PATHLDFLAGS , pkgconfig .pc file 应该会为您解决这个问题。

关于compilation - PKG_CONFIG_PATH变量,编译RRDtool时如何设置LDFLAGS和CPPFLAGS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359092/

相关文章:

linux - 可以在 Linux 上编译 Windows 代码吗?

c++ - 编译斯坦福 C++ 库

compilation - 编译红色: Get Red/System Code

c# - 为什么这种编译方式有所不同?

java项目编译问题

c - C 中函数的隐式声明

在预处理阶段之后但在汇编阶段之前进行编译

c# - NHibernate错误:s

c - RabbitMQ-C 构建错误(使用 openSSL)

eclipse - 在 Eclipse 中为 C/C++ 编译启用标志(Wall、pedantic)