符号链接不使用目标工作目录

符号链接不使用目标工作目录

我创建了以下符号链接:

来源:/usr/local/android-ndk-r5/ndk-build
目的地:/usr/local/bin/ndk-build

但是,当我尝试从源目录使用 ndk-build 时,它会失败,因为它在源目录中找不到脚本所依赖的文件。

如何获取符号链接以使用源目录作为工作目录?

答案1

你不能,你需要制作一个包装脚本。

假设程序依赖文件名来确定脚本(可能):

#!/bin/sh
exec /usr/local/android-ndk-r5/ndk-build "$@"

假设程序依赖于当前工作目录(不太可能):

#!/bin/sh
cd /usr/local/android-ndk-r5
exec ./ndk-build "$@"

保存其中一个文件/usr/local/bin/ndk-build并使其可执行:

sudo editor /usr/local/bin/ndk-build
sudo chmod 755 /usr/local/bin/ndk-build

答案2

在 GNU Linux 下调用执行程序时会收到一些命令行参数,包括当前工作目录。

程序中的代码决定如何使用这些参数,因此代码决定程序是否使用链接的目录或目标的目录。

显然ndk 构建使用链接的目录来查找其自己的文件,因此您被迫创建某种包装器。

注意不要混淆当前工作目录(在该目录下你的命令运行,即pwd命令返回的目录)与命令使用的目录的“感知”ndk 构建找到它自己的文件。

相关内容