Транзитивная динамическая ссылка в С++

Допустим, у меня есть динамическая библиотека a.so.

Затем я строю b.so против a.so, только если a.so присутствует на машине.

Затем я создаю исполняемый файл c против b.so.

Я надеялся забыть все о a.so в c Makefile, но оказалось, что мне нужно добавить a во флаги -L или я получил неопределенную ссылку на символ a.so во время ссылки c.

Это нормально с динамической ссылкой или я что-то забыл?


person Mathieu Westphal    schedule 10.04.2013    source источник
comment
Да, это нормально. Если ваш исполняемый файл зависит как от a, так и от b, то он определенно требует некоторых (или всех) экспортируемых символов от обоих. Соответственно, вы должны связать их с обоими, чтобы эти необходимые символы были правильно разрешены. Для запуска приложения вам также понадобятся оба *.so.   -  person Alexander Shukaev    schedule 10.04.2013
comment
Возможный дубликат: stackoverflow.com/questions/5664338/   -  person Kiril Kirov    schedule 10.04.2013