【问题标题】:Understand flag setting了解标志设置
【发布时间】:2018-08-10 17:04:23
【问题描述】:

我正在尝试安装 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

【问题讨论】:

  • @Cong Ma,但这并没有造成错误。不过,感谢您向我展示了更好的做法。
  • 缺少引号肯定会导致错误。如果您在修复引号后还有其他错误,请发布。

标签: linux bash ubuntu environment-variables variable-expansion


【解决方案1】:

线

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 扩展为所需的文本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2011-03-09
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-03
    • 1970-01-01
    相关资源
    最近更新 更多