在 zshrc 文件中导出多个 LDFLAGS、CPPFLAGS、PKG_CONFIG_PATH

在 zshrc 文件中导出多个 LDFLAGS、CPPFLAGS、PKG_CONFIG_PATH

在我的.zshrc文件中,我有 OpenSSL 的现有导出。

export LDFLAGS="-L/usr/local/opt/[email protected]/lib"
export CPPFLAGS="-I/usr/local/opt/[email protected]/include"
export PKG_CONFIG_PATH="/usr/local/opt/[email protected]/lib/pkgconfig"

现在我必须编译需要该zlib库的包。如何添加这些标志而不覆盖以前的标志?

我尝试将它们链接起来,就像:为路径完成的那样,但这似乎不起作用,当我运行./configure它时将它们作为单个标志读取。

ld: 警告: 找不到选项 '-L/usr/local/opt/ 的目录[电子邮件受保护]/lib:-L/usr/local/opt/zlib/lib'

有人可以建议如何正确执行此操作吗?

答案1

目前尚不清楚为什么要在 shell 的启动脚本中设置这些变量,或者为什么需要设置它们,因为它们应该由脚本确定configure,可能使用pkg-config(因此PKG_CONFIG_PATH修改可能仍然很有趣)。我忽略了这一点,而是专注于如何添加这些变量。


LDFLAGS和变量CPPFLAGS包含编译软件时在各个阶段传递给工具的命令行标志。这些应该包含空格分隔的标志。

export LDFLAGS=-L/some/directory

稍后(注意,您只需使用export变量一次):

LDFLAGS="$LDFLAGS -L/other/directory"

或者,

LDFLAGS+=" -L/other/directory"

PKG_CONFIG_PATH变量由工具使用pkg-config。它的手册状态(我的重点):

PKG_CONFIG_PATH
这可以用来指定以冒号分隔的路径列表来搜索包文件。如果给定,则此路径列表将添加到标准搜索路径之前。

所以,

export PKG_CONFIG_PATH=/some/directory

之后:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/other/directory

或者,

PKG_CONFIG_PATH+=:/other/directory

答案2

事实证明,我就像将预先存在的导出添加到末尾一样简单。

export LDFLAGS="-L/usr/local/opt/zlib/lib $LDFLAGS"
export CPPFLAGS="-I/usr/local/opt/zlib/include $CPPFLAGS"
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH"

没有任何地方发出嘎嘎声,并且全部编译正确。

感谢您的回答,非常感谢。

相关内容