Ссылка только один раз на библиотеку

У меня есть основное приложение и две библиотеки: foo и bar. foo использует bar в некоторых методах, и он указан в LDADD. Мое основное приложение использует foo и косвенно bar, поэтому в Makefile оно имеет LDADD = foo.

В этом случае, если я не добавлю библиотеку баров в LDADD для моего основного приложения, я получу ошибку компиляции.

Неопределенные ссылки; и это говорит о том, что.so файлы из foo требуют.so файлы из бара.

Я не понимаю этого. Как только я компилирую (нестатический) foo с LDADD = bar, зачем он мне снова нужен, когда я компилирую приложение, использующее foo?

1 ответ

Решение

Вы не указываете, если foo и / или bar библиотеки libtool, созданные как часть дерева исходных текстов Если это так, libtool должен взять ссылки. т.е. с foo требует bar как часть библиотеки:

libfoo_la_LIBADD = ../bar/libbar.la # in: foo/Makefile.am

а также,

prog_LDADD = ../foo/libfoo.la # in: app/Makefile.am
Другие вопросы по тегам