Начните с разделяемой библиотеки libA.so, которая находится в / some / lib.
Я строю библиотеку (libB.so), которая зависит от возможностей в libA.so. Поэтому при создании libB.so я включаю -L / some / lib -lA в командную строку g ++.
libB.so также будет находиться в /some/lib.
Теперь я создаю исполняемый файл, который будет использовать libB.so. Я предоставляю ожидаемые -L / some / lib и -lB для компоновщика g ++. Но я получаю ошибку, потому что не могу найти "libA.so". Если я добавлю «-lA» в строку компоновщика, программа выполнит ссылку.
Я не понимаю, почему он не находит "libA.so". Я, конечно, не понимаю, почему включение «-lA» в строку компоновщика позволяет найти его. Кажется, он уже знает, что ему нужен libA.so, а libA.so находится по тому же пути, что и libB.so.
Может кто-нибудь объяснить это? Мне не нравится идея явно указывать «-lA» в каждом исполняемом файле, который хочет связать libB.so. Я сделал что-то еще не так?