¿Cómo get una list de símbolos descartados cuando la aplicación iOS está vinculada a una biblioteca estática?

Estoy construyendo una biblioteca estática de iOS para que los utilicen terceros. Está construido utilizando varias otras bibliotecas estáticas que contienen una gran cantidad de C ++, lo que resulta en una gran biblioteca entregable.

La API de la biblioteca iOS es bastante simple, y sé que no ejerce todo el código incluido. Me gustaría eliminar los modules no deseados de las distintas bibliotecas para que pueda bajar el tamaño final.

Tengo una aplicación de ejemplo que utiliza todas las API de la biblioteca, y cuando está vinculada, la mayoría de los símbolos de la biblioteca se descartan. ¿Hay alguna forma de get una list de esos símbolos?

Esta respuesta parece indicar que lo que quiere hacer no es posible en GCC 3.xy 4.x:

Restringir símbolos en una biblioteca estática de Linux

Me han dicho que la restricción en el uso de la biblioteca dinámica se ve reforzada por el process de firma del código, así que creo que esto podría funcionar:

  1. Vincula el ejecutable de tu aplicación de ejemplo contra la biblioteca estática.
  2. Ejecute nm -uj para enumerar los símbolos no definidos en el ejecutable. Como la biblioteca se ha vinculado estáticamente, los únicos símbolos indefinidos deberían ser los definidos por las bibliotecas estándar de iOS
  3. Cree una versión dinámica de la biblioteca estática.
  4. Vincula el ejecutable de tu aplicación de ejemplo contra la biblioteca dinámica
  5. Ejecute nm -uj contra este ejecutable. Los símbolos no definidos son la unión de los enumerados en el paso 2 con los símbolos de la biblioteca a los que el ejecutable hace reference
  6. diff las lists del paso 2 y del paso 5. Esto le dará la list de símbolos en la biblioteca solamente
  7. Ejecute nm -js __TEXT __text en los files object para get una list de las funciones exportadas por cada file object
  8. Agregue a la biblioteca solo los files object que exportan una function enumerada en el paso 6.

Esto puede automatizarse y probablemente deba mejorarse para tener en count otros símbolos que no sean funciones (por ejemplo, variables globales).