
Por favor, comprenda que estoy usando Autotools/Automake/Autoconf yNo puedo usar la redirecciónporque debe aplicarse comando por comando en el archivo make generado por autotools.
Necesito una forma de hacer que Autotools cree un archivo make que tenga disposiciones para generar y guardar los listados del compilador y/o ensamblador asociados con cada uno.individualfuente en el paquete.
Mi primer intento fue agregar '-Wa,-acdhln -g' a CCFLAGS. De hecho, esto produjo una lista compuesta de c/ensamblador, perofue a la terminal,no en un archivo. Si capturara la salida de make (usando la redirección), tendría 47 listados diferentes unidos junto con comandos de compilación intercalados.
Lo que esperaba que sucediera, leyendo con optimismo el documento del CCGOpciones generales: uso de la colección de compiladores GNU,
-o archivo
Coloca la salida en el archivo archivo. Esto se aplica a cualquier tipo de resultado que se produzca, ya sea un archivo ejecutable, un archivo objeto, un archivo ensamblador o código C preprocesado.Si no se especifica -o, el valor predeterminado es colocar un archivo ejecutable en a.out, el archivo objeto para source.suffix en source.o, su archivo ensamblador en source.s, un archivo de encabezado precompilado en source.suffix.gch y toda la fuente C preprocesada en salida estándar.
es para que aparezcan los archivos {file}.o y {file}.s, según "-o {file}.o" en la línea de comando de GCC.
Lo que sucedió es que la lista de ensamblaje aparentemente se envió a la salida estándar.
EDITAR para agregar el 23 de octubre de 2016. Ahora me doy cuenta de que la documentación hablaba de cosas como el archivo de salida del compilador pasado como entrada al ensamblador y el archivo de salida del ensamblador pasado como entrada al vinculador. Tampoco lo sería el archivo LISTADO del ensamblador que quiero capturar.
Esto también se aplica al uso de la opción -save-temps; solo guardaría la salida del ensamblador, que es el archivo de entrada del vinculador, no el archivo de listado del ensamblador.
Una interpretación alternativa del documento podría implicar que cada archivo de salida se colocaría en un único archivo nombrado en el operando -o, ya sea entremezclado o con el último archivo creado superpuesto a los archivos creados previamente. (Por ejemplo, la salida del paso del compilador se superpone con la salida del paso del ensamblador se superpone con la salida del paso de la colección).
Como esto parece ser contraproducente, supuse que GCC (el ejecutivo de nivel superior) podría ser lo suficientemente inteligente. para ajustar el nombre del archivo para diferentes pases. Esto no parece ser cierto.Omitir el nombre del archivo en "-o" parecería ser exactamente lo que se desea, excepto que el archivo objeto siempre se llama "a.out" en lugar de "{fuente}.o". No tiene sentido para mí por qué se eligió una constante para el nombre de salida de origen, pero un paso de cambio de nombre después de cada invocación de GCC podría cambiar "a.out" a "{source}.o".
Consultando elDocumentación del ensamblador GNUdice aún menos sobre -o y no tiene opción para manejar el listado de salida. Una versión en ensamblador, tigcc, documenta que el listado se emite como salida estándar.
¿Las revisiones GNU y GNU Build Standard para Unix no abordaron esto?
(¿Estoy loco o simplemente estoy viviendo en una irrealidad llamada Unix? ? ?)
Entonces ahora parece que Make necesita decirle a GCC que cuando se ejecuta el paso de ensamblaje, esa salida estándar debe colocarse en el[correo electrónico protegido]archivo. Sospecho que esto no se puede hacer, dado cómo parecen comportarse las opciones de GCC (y un vistazo rápido a cómo se usan los archivos de especificaciones). Quizás Automake (¿o libtools?) pueda crear una operación de compilación de varios pasos, separando los distintos pasos para que se pueda capturar la salida del ensamblado.
Pero,Dado que el archivo make es generado por autotools, necesito una manera dedecirle a autotools que cree el archivo makeque creará/capturará el archivo de salida del ensamblaje. Esta tarea parece requerir reescribir algunas de las reglas y/o macros de autoconf/automake.
Finalmente, estoy trabajando con un paquete que alguien más creó usando autotools, lo cargó y lo descargó. No hice el empaquetado de autotools, ni creé los archivos gigantes *.ac, y no quiero piratearlos, si es que es posible evitarlos.
Solo necesito obtener algunos mapas de ensamblaje y enlaces para intentar depurar un problema con el paquete.
Respuesta1
Finalmente me detuve y escribí un programa real que analizó la salida capturada del terminal y extrajo los archivos de listado. Si bien funciona para mi sistema/configuración de compilación/paquete específico, no puedo ofrecerlo más que como un ejemplo. Ciertamente no es una herramienta fácilmente utilizable.
Lamento que esto realmente no sea una respuesta general para superar una deficiencia de herramientas automáticas.