Мой проект состоит из пары статических библиотек, которые связаны на последнем этапе. Теперь у меня проблема в том, что порядок библиотек важен (в противном случае я получаю неопределенную ошибку компоновщика символов). Иногда я сталкиваюсь с проблемой, что мне приходится пересортировать связанные библиотеки (-lcommon -lsetup -lcontrol и т. Д.). На данный момент это глупый метод проб и ошибок: пересортировать, скомпилировать, проверить ошибку, пересортировать, скомпилировать и так далее.
Итак, я написал небольшую программу, чтобы показать мне межбиблиотечные зависимости и сформировал порядок библиотек для связи. Он считывает определенные ('T', 'B' и т. Д.) И неопределенные символы ('U') из nm и удаляет слабые символы ('w', 'W ',' v 'и' V ') из «неопределенного списка символов». Теперь он определяет для каждого неопределенного символа библиотеку, которая его разрешает.
Но моя программа показывает мне круговые зависимости ... в чем моя ошибка?
Если они действительно существуют, я не смог бы связать вообще ... так что что я пропустил, анализируя вывод нм ? Или анализ выходной мощности нм не является способом получения этих зависимостей?
libcommon.a:
U _ZN15HardwareUnit23GetHardwareSerialNumberEv
libhardware.a:
00000484 T _ZN15HardwareUnit23GetHardwareSerialNumberEv
libsecurityaccess.a:
U _ZN15HardwareUnit23GetHardwareSerialNumberEv
---
libhardware.a:
U _ZN21ApplicationProfile26GetApplicationSettingsPathERK7QString
libsecurityaccess.a:
00004020 T _ZN21ApplicationProfile26GetApplicationSettingsPathERK7QString
U _ZN21ApplicationProfile26GetApplicationSettingsPathERK7QString