2010-12-01 6 views
5

Estoy construyendo una biblioteca estática de iOS para uso de terceros. Se compila utilizando varias otras bibliotecas estáticas que contienen una gran cantidad de C++, lo que da como resultado una enorme biblioteca de entrega.¿Cómo obtener una lista de símbolos descartados cuando la aplicación iOS está vinculada a una biblioteca estática?

La API para la biblioteca de iOS es bastante simple, y sé que no ejerce todo el código incluido. Me gustaría eliminar los módulos no deseados de las distintas bibliotecas para poder 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 en la biblioteca se descartan. ¿Hay alguna manera de obtener una lista de esos símbolos?

Respuesta

0

Me han dicho que la restricción en el uso de la biblioteca dinámica se impone mediante el proceso de firma de código, así que creo que esto podría funcionar:

  1. Enlace el ejecutable de la aplicación de ejemplo contra la biblioteca estática
  2. Run nm -uj a la lista t Símbolos indefinidos en el ejecutable. Desde la biblioteca se ha relacionado de forma estática, los únicos símbolos no definidos deben ser los definidos por las bibliotecas estándar de iOS
  3. crear una versión dinámica de la biblioteca estática
  4. Enlace el ejecutable de la aplicación de ejemplo contra la biblioteca dinámica
  5. Ejecute nm -uj contra este ejecutable. Los símbolos indefinidos son la unión de los enumerados en el paso 2 con los símbolos de la biblioteca a los que hace referencia el ejecutable
  6. diff las listas del paso 2 y el paso 5. Esto le dará la lista de símbolos en la biblioteca solamente
  7. nm -js __TEXT __text Ejecutar en los ficheros objeto para obtener una lista de las funciones exportadas por cada fichero objeto
  8. Agregar a la biblioteca solamente los ficheros objeto que exportan una función que aparece en el paso 6.

Esto puede ser automatizado y probablemente necesite mejorarse para tener en cuenta los símbolos que no sean funciones (p. ej., global varia bles).

Cuestiones relacionadas