Я создал переходящую символьную ссылку:
Источник: /usr/local/android-ndk-r5/ndk-build
Место назначения: /usr/local/bin/ndk-build
Однако, когда я пытаюсь использовать ndk-сборку из своего исходного каталога, она перестала работать, потому что она не может найти файлы, что сценарий зависит от в исходном каталоге.
Как я могу заставить символьную ссылку использовать исходный каталог в качестве рабочего каталога?
Вы не можете, необходимо сделать сценарий обертки.
Предположение, что программа полагается на имя файла для определения сценария (вероятно):
#!/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
Когда выполнение вызова программа под GNU Linux получает некоторые параметры командной строки, включая текущий рабочий каталог.
Код в программе решает, как использовать эти аргументы, следовательно код решает, будет ли программа использовать каталог ссылки или каталог цели.
По-видимому, ndk-сборка использует каталог ссылки для нахождения ее собственных файлов, таким образом, Вы вынуждены создать некоторую обертку.
Бойтесь смешивать "восприятие" текущего рабочего каталога (под которым работает Ваша команда, который является каталогом, возвращенным pwd
команда) с "восприятием" каталога, используемого ndk-сборкой для нахождения ее собственных файлов.