我正在尝试安装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扩展到所需的文本。

09-13 12:46