Estoy construyendo un proyecto que construye múltiples bibliotecas compartidas y archivos ejecutables. Todos los archivos fuente que se usan para construir estos binarios están en un directorio único/src. Por lo tanto, no es obvio averiguar qué archivos fuente se usaron para compilar cada uno de los binarios (hay una relación muchos a muchos).¿Cómo encontrar los archivos * .c y * .h que se usaron para construir un archivo binario?
Mi objetivo es escribir un script que analice un conjunto de archivos C para cada binario y asegúrese de que solo se invocan las funciones correctas de ellos.
Una opción parece ser intentar extraer esta información de Makefile. Pero esto no funciona bien con los archivos generados y los encabezados (debido a la dependencia de las inclusiones).
Otra opción podría ser simplemente navegar por los gráficos de llamadas, pero esto se volvería complicado, ya que se utilizan muchas funciones mediante el uso de punteros a funciones.
¿Alguna otra idea?
Solo por curiosidad: ¿por qué estás intentando esto? – stefan
El mecanismo del paquete de distribución conoce todas las dependencias ... –
¿Tiene una definición precisa de lo que significa "se llaman las funciones correctas"? No es obvio y no es simple. –