在我的.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"
没有任何地方发出嘎嘎声,并且全部编译正确。
感谢您的回答,非常感谢。