Compilation PKG_CONFIG_PATH变量,如何在编译RRDtool时设置LDFLAGS和CPPFLAGS

Compilation PKG_CONFIG_PATH变量,如何在编译RRDtool时设置LDFLAGS和CPPFLAGS,compilation,Compilation,任务是在Red Hat derivate上安装rrdtool,禁止使用yum或up2date软件包。将rrdtool的所有依赖项从源代码编译到 单独目录: /apps/run/separare_文件夹 基本上我所有的都是这样的: ls cairo glib pango pixman -- pwd /apps/run export LD_LIBRARY_PATH=/apps/run/glib/lib;export LD_LIBRARY_PATH=/ap

任务是在Red Hat derivate上安装rrdtool,禁止使用yum或up2date软件包。将rrdtool的所有依赖项从源代码编译到 单独目录: /apps/run/separare_文件夹

基本上我所有的都是这样的:

ls
cairo        glib         pango        pixman
--
pwd
/apps/run
export LD_LIBRARY_PATH=/apps/run/glib/lib;export LD_LIBRARY_PATH=/apps/run//apps/run/cairo/lib
编译四个依赖项后,rrdtool在./configure--prefix=/apps/run/rrdtool期间抱怨

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

所有警告如下:
我确实有所有丢失的库,但需要告诉编译器如何找到它们是一件非常痛苦的事情。例如,缺少的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以包含多个所需lib的目录[例如glib-2.0.pc、cairo ps、cairo png,…] 可以找到。试过这样的方法:

ls
cairo        glib         pango        pixman
--
pwd
/apps/run
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的一部分?
语法应该是什么?请提供建议,寻找一般的方法,但不能适应我的环境。Thx

要设置路径,例如
PKG\u CONFIG\u PATH
LD\u LIBRARY\u PATH
,您应该使用单个
导出
,并使用
分隔路径。例如:

export-PKG\u-CONFIG\u-PATH=/my/PATH:/my/other/PATH:/yet/other/PATH

如您在
LD\u LIBRARY\u PATH
中所示,依次运行多个导出将覆盖它们,即只保留最后一个导出。通常,明智的做法是始终包含当前值(如果为空则可以):

export-PKG\u-CONFIG\u-PATH=/my/PATH:/my/other/PATH:/yet/other/PATH:$PKG\u-CONFIG\u-PATH

尝试在系统上查找
cairo png.pc
文件,然后将
PKG\u CONFIG\u PATH
设置为包含该文件的目录

应该没有必要去摆弄
LDFLAGS
LD\u LIBRARY\u路径,pkgconfig
.pc
文件应该为您处理这些