了解标志设置

Understand flag setting

我正在尝试安装 BerkeleyDB STL。 我运行下面代码下载n安装一样

curl -OL http://download.oracle.com/berkeley-db/db-6.2.23.NC.tar.gz
tar xf db-6.2.23.NC.tar.gz
cd db-6.2.23.NC/build_unix
../dist/configure --prefix=$HOME --enable-stl
make
make install

然后为了进一步安装我的应用程序,我需要告诉 R BerkeleyDB STL 在哪里,我按照手册中的说明做了:

CPPFLAGS=-I${HOME}/include
LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib

但是在 运行 第二个命令时出现以下错误:

bash: -Wl,-rpath=/home/mayankmodi/lib: No such file or directory

即使目录结构是

.
├── bin
├── env
├── include
├── lib
└── Videos
*I have deleted most of my folders to make it easy to spot lib directory

问题:我需要理解

的含义
LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib

LDFLAGS=-L${HOME}/lib -Wl,-rpath=${HOME}/lib

随着 HOME 变量展开,变为

LDFLAGS=-L/home/mayankmodi/lib -Wl,-rpath=/home/mayankmodi/lib [rest of actual command]

这被解释为接近

EnvironmentVariable=Value command line ...

即Bash 将文本 -Wl,-rpath=/home/mayankmodi/lib 解释为命令的开头或可执行文件的路径,并尝试使用环境变量设置 LDFLAGS=-L/home/mayankmodi/lib 运行 它,但失败了,因为没有这样的命令或程序。

要解决此问题,您可以将要提供给 LDFLAGS 的值用双引号引起来:

LDFLAGS="-L${HOME}/lib -Wl,-rpath=${HOME}/lib"

以便 LDFLAGS 扩展到所需的文本。