es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo crear solo un archivo de objeto sin ejecutable?

Estoy intentando crear un archivo de objeto a través de un archivo make que será llamado en otro script.

El siguiente es mi archivo make para crear un archivo de objeto.

SOURCE_CK = ../SOURCES_COUNTERFLOW/
SOURCES_f77 = $(SOURCE_CK)density.f 
#TARGET = 
OBJECTS = $(SOURCES_f77:.f=.o)
COMPILE = f77
.f.o :
$(COMPILE) -o $*.o -c $*.f
#$(TARGET) : $(OBJECTS)
#   $(COMPILE)  $(OBJECTS) -o $@
#del :
#   /bin/rm $(OBJECTS)

Cuando ejecuto el script anterior, se genera el siguiente error.

make: *** No hay objetivos.  Detenido.

Ahora sé que tengo que hacer algunas modificaciones con TARGET, pero no estoy seguro de por dónde empezar o cómo modificar el objetivo.

Una vez más, mi objetivo es ejecutar el script y generar el archivo density.o.

Cualquier ayuda sería apreciada.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que la sección de destino del archivo make está comentada, lo que impide que se compile el archivo density.o. Necesitas descomentar la sección de destino y modificar la variable TARGET para que coincida con el nombre del archivo de salida deseado.

    Aquí tienes un ejemplo de cómo puedes modificar el archivo make:

    SOURCE_CK = ../SOURCES_COUNTERFLOW/
    SOURCES_f77 = $(SOURCE_CK)density.f 
    TARGET = density.o
    OBJECTS = $(SOURCES_f77:.f=.o)
    COMPILE = f77
    
    .f.o :
        $(COMPILE) -o $*.o -c $*.f
    
    $(TARGET) : $(OBJECTS)
        $(COMPILE)  $(OBJECTS) -o $@
    
    clean :
        /bin/rm $(OBJECTS) $(TARGET)
    

    En este archivo make modificado, la variable TARGET se establece en density.o, que es el archivo de salida deseado. Después de compilar el archivo fuente density.f, $(OBJECTS) contiene la lista de todos los archivos objeto, que se utiliza en la sección de destino para compilar el archivo density.o final.

    Puedes ejecutar el archivo make simplemente ingresando el comando make en la terminal, lo que generará el archivo density.o. Para eliminar los archivos objeto y el archivo de destino, puedes ejecutar make clean.

    Espero que esto te ayude a generar el archivo objeto necesario.

Comments are closed.