Como determinar as dependências entre bibliotecas?

Meu projeto consiste em algumas bibliotecas estáticas, que são vinculadas em uma etapa final. Agora eu tenho o problema, que oordem dos links da biblioteca é importante (caso contrário, recebo um erro indefinido do vinculador de símbolo). Às vezes, encontro o problema, que tenho que reorganizar as bibliotecas vinculadas (-lcommon -lsetup -lcontrol etc). No momento, é uma tentativa e erro estúpido: re-classificar, compilar, verificar erro, re-classificar, compilar e assim por diante.

Então, escrevi um pequeno programa para me mostrar as dependências entre bibliotecas e me gera a ordem das bibliotecas para vincular. Ele lê os símbolos definidos ('T', 'B', etc) e indefinidos ('U') denm e remove osímbolos fracos ('w', 'W', 'v' e 'V') da 'lista de símbolos indefinidos'. Agora, ele determina para cada símbolo indefinido a biblioteca que o resolve.

Mas meu programa me mostra dependências circulares ... qual é o meu erro?

Se eles realmente existem, eu não poderia ligar ... entãoo que eu perdi, ao analisar a saída nm? Ou não está analisando a saída nm para obter essas dependências?

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

questionAnswers(2)

yourAnswerToTheQuestion