Я пытаюсь скомпилировать простой проект для QNX / ARM, который состоит из основного исполняемого файла и двух общих библиотек, liba и libb.
main зависит только от liba и не использует ничего из libb ввсе.либа зависит от либб.Таким образом, цепочка зависимостей: main -> liba -> libb.Следовательно, libb является косвенной / транзитивной зависимостью main.liba.so находится в подкаталоге liba /, libb.so находится в подкаталоге libb /.
Я связываю main следующим образом:
qcc -Vgcc_ntoarmv7le -Wl,--no-undefined -lang-c++ -o linktest main.o -L$TARGET/lib -Llibb -Lliba -la
Как видите, из-задве строки -L, компоновщик не должен иметь проблем с поиском как libb, так и liba.
Когда я компилирую это с помощью цепочки инструментов QNX / ARM, я получаю ошибку:
ntoarm-ld: warning: libb.so, needed by liba/liba.so, not found (try using -rpath or -rpath-link)
Использование straceподтверждает, что ld никогда даже не заглядывает в каталог libb /, несмотря на то, что это указано с помощью -L.
Почему он не просматривает здесь каталоги -L?