2010-12-01 2 views
5

Ich baue eine statische iOS Bibliothek für Dritte. Es wurde mit mehreren anderen statischen Bibliotheken erstellt, die eine große Menge an C++ enthielten, was zu einer großen lieferbaren Bibliothek führte.Wie erhalten Sie eine Liste verworfener Symbole, wenn die iOS-App mit einer statischen Bibliothek verknüpft ist?

Die API für die iOS-Bibliothek ist ziemlich einfach, und ich weiß, dass es nicht den gesamten enthaltenen Code ausübt. Ich möchte die unerwünschten Module aus den verschiedenen Bibliotheken entfernen, damit ich die endgültige Größe heruntersetzen kann.

Ich habe eine Beispiel-App, die alle Bibliothek APIs verwendet, und wenn es verknüpft ist, werden die meisten Symbole in der Bibliothek verworfen. Gibt es eine Möglichkeit, eine Liste dieser Symbole zu erhalten?

Antwort

0

Ich habe gesagt, dass die Beschränkung auf die Verwendung dynamischer Bibliothek wird durch den Code-Signing-Prozess erzwungen, so denke ich, das funktionieren könnte:

t
  1. Verknüpfen Sie die ausführbare Datei Ihrer Beispielanwendung gegen die statische Bibliothek
  2. Run nm -uj zur Liste Die nicht definierten Symbole in der ausführbaren Datei. Da die Bibliothek statisch gelinkt wurde, sollten die einzigen undefinierte Symbole diejenigen, die von den Standard-iOS-Bibliotheken
  3. erstellen
  4. Verknüpfen Sie die ausführbare Datei Ihrer Beispielanwendung eine dynamische Version der statischen Bibliothek gegen die dynamische Bibliothek definiert sein
  5. Führen Sie nm -uj gegen diese ausführbare Datei. Die undefinierten Symbole sind die Vereinigungen der in Schritt 2 aufgelisteten Symbole mit den Bibliothekssymbolen, die tatsächlich von der ausführbaren Datei referenziert werden. Dadurch erhalten Sie die Liste der Symbole in der Bibliothek nur
  6. Run nm -js __TEXT __text auf den Objektdateien eine Liste der Funktionen, die von jedem Objekt-Datei exportiert zu bekommen
  7. nur die Objektdateien in die Bibliothek hinzufügen, die eine Funktion in Schritt aufgelistet exportieren 6.

Diese automatisiert werden kann und muss wahrscheinlich verbessert werden, um andere Symbole als Funktionen zu berücksichtigen (z. B. globale Varia bles).

Verwandte Themen