Как определить межбиблиотечные зависимости?

Мой проект состоит из пары статических библиотек, которые связаны между собой на последнем этапе. Теперь у меня проблема, что порядок ссылок библиотеки важен (в противном случае я получаю неопределенную ошибку компоновщика символов). Иногда я сталкиваюсь с проблемой, что мне нужно пересортировать связанные библиотеки (-lcommon -lsetup -lcontrol и т. Д.). На данный момент это глупый метод проб и ошибок: повторная сортировка, компиляция, проверка ошибок, повторная сортировка, компиляция и так далее.

Итак, я написал небольшую программу, чтобы показать мне межбиблиотечные зависимости и определить порядок библиотек для компоновки. Он считывает определенные ('T', 'B' и т. Д.) И неопределенные символы ('U') из нм и удаляет слабые символы ('w', 'W ',' v 'и' V ') из' списка неопределенных символов '. Теперь он определяет для каждого неопределенного символа библиотеку, которая его разрешает.

Но моя программа показывает мне циклические зависимости ... в чем моя ошибка?

Если они действительно существуют, я вообще не мог связать ... так что что я пропустил при анализе вывода нм ? Или анализ вывода nm не позволяет получить эти зависимости?

libcommon.a:
         U _ZN15HardwareUnit23GetHardwareSerialNumberEv
libhardware.a:
00000484 T _ZN15HardwareUnit23GetHardwareSerialNumberEv
libsecurityaccess.a:
         U _ZN15HardwareUnit23GetHardwareSerialNumberEv
---
libhardware.a:
         U _ZN21ApplicationProfile26GetApplicationSettingsPathERK7QString
libsecurityaccess.a:
00004020 T _ZN21ApplicationProfile26GetApplicationSettingsPathERK7QString
         U _ZN21ApplicationProfile26GetApplicationSettingsPathERK7QString

5
задан Charly 24 January 2011 в 09:20
поделиться