Как создать символическую ссылку на все файлы в каталоге с использованием сокращенного имени, полученного с помощью конвейерного сокращения имени файла

У меня есть каталог, полный библиотек ( *. Поэтому .0. * ), и я хочу использовать find для создания символической ссылки на каждый файл с именем *. So.0 .

Вот (неработающая) попытка:

найти $ HOME / .local / lib64 / -name "lib * .so.0. *" -Execdir ln -s {} $ (echo {} | cut -d. -f 1-4) \;

Но я не могу понять, почему это не работает.

Я пробовал использовать только одну библиотеку, используя ln -s ./libfoo.so.0.12.0. $ (echo ./libfoo.so.0.12.0. | cut -d. -f 1-4) , результатом будет ./ libfoo.so.0 .

0
10.05.2016, 21:27
1 ответ

Вы пытаетесь установить альтернативный набор ELF-библиотек для запуска приложения, поэтому вместо того, чтобы возиться с ручным созданием симлинков, перейдите прямо к предполагаемому применению проблемы: ldconfig $HOME/.local/lib64/ должен обновить все симлинки в каталоге.

Они не всегда будут .so.0, это будет зависеть от данных SOVERSION в библиотеках ELF.

1
28.01.2020, 02:48

Теги

Похожие вопросы