2009-12-10 2 views
1

У меня есть статический Lib A, который также использует статический ЛИЭС B, C и D.Авто связывающие зависимости от статического Lib

Я тогда иметь приложения Х и У, которые оба используют, но не В, С или D.

Есть ли способ сделать так, чтобы X и Y автоматически увидели, что A используется B, C и D и связывают их, так что мне не нужно отслеживать все дерево зависимостей, чтобы я мог явно пропускают все статические lib (довольно много с такими вещами, как Windows, Boost и т. д.)?

ответ

2

Статические библиотеки не связаны с другими статическими библиотеками. Только при создании исполняемого файла (или разделяемой библиотеки/библиотеки DLL) выполняется привязка, и способ отслеживания этого (конечно) использовать make.

-1

Простой способ всегда предлагать конкретные библиотеки A, B, C и D для связи. Для подлинной библиотеки компоновщик извлекает только необходимые модули.

Основная проблема с A, имеющей неявное связывание с другими библиотеками, заключается в том, что они не обязательно однозначно идентифицируются. Например, следует ли использовать версию 2.0 или 3.1? Один в/usr/share/lib или один в/usr/lib/X11/xdm/share/lib? И т.д.

+0

проблема с вещами, как повысить его трудно для X, чтобы узнать, какой импульс libaries Используется, и если X не использовал одинаковые ошибки компоновщика библиотеки boost, поэтому причина, по которой я хочу, чтобы он автоматически связал его. Если использовать A, то говорят, что 1.38 форсирования и X 1.40 повышают его способность вызывать проблемы, независимо от погоды, привязка этого specfic-компонента была автоматизирована, или я выполняю значительные усилия по разработке, которые используют ускоренные библиотеки A. –

+0

Недостатком этого является, конечно, расширенное время соединения. –

1

Я думаю, что концептуально вы могли бы объединить библиотеки вместе, чтобы достичь того, чего вы хотите, - это просто набор символов, готовых для компоновщика. Сказав это, я никогда не видел инструмент для этого. Бинарный формат lib - это вопрос компилятора, поэтому он должен быть специальным инструментом mingw или gcc.

С точки зрения зная, какую версию Boost, импровизировать А использует, есть не очень много для него, но найти в документации по А.

+0

Если вы используете компилятор GCC (или другие компиляторы UN * X/Linux), вы можете использовать инструмент ar для управления статическими библиотеками. На этих платформах библиотеки представляют собой просто конкатенированные объектные файлы с необязательным индексом. Но стоит ли создавать мега-библиотеку из нескольких небольших библиотек, это хорошая идея. –

 Смежные вопросы

  • Нет связанных вопросов^_^