Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

658
Vistas
Makefile Error fatal: no se puede crear obj/calc.o

Estoy tratando de hacer un archivo MAKE para una calculadora simple para un proyecto universitario. Lo necesito hecho, y he buscado tutoriales en la web y finalmente encontré este código:

 IDIR =include CC=gcc CFLAGS=-I$(IDIR) ODIR=obj LDIR=lib SDIR=src LIBS=-lm _DEPS = calc.h DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) _OBJ = calc.o libcalc.o OBJ = $(patsubst %,$(ODIR)/%,$(_OBJ)) $(ODIR)/%.o: $(SDIR)/%.c $(DEPS) $(CC) -c -o $@ $< $(CFLAGS) calc: $(OBJ) gcc -o $@ $^ $(CFLAGS) $(LIBS) .PHONY: clean clean: rm -f $(ODIR)/*.o *~ core $(INCDIR)/*~

La salida del comando make es

 gcc -c -o obj/calc.o calc.c -I../include Assembler messages: Fatal error: can't create obj/calc.o: No such file or directory make: *** [obj/calc.o] Error 1

Mi profesor no nos dio ninguna pista ni instrucción para esto, así que estoy realmente perdido.

Mi proyecto está dividido en tres carpetas: lib , src e include . src contiene el código fuente del proyecto, denominado calc.c , include contiene el encabezado denominado calc.h y lib contiene la biblioteca denominada libcalc.c .

EDITAR: descubrí este error, y fue que el directorio obj en src no se creó. Sin embargo, sigue sin funcionar. El nuevo mensaje de error es:

 make: *** No rule to make target `obj/libcalc.o', needed by `calc'. Stop.

EDIT 2: Acabo de mover libcalc.c de lib a obj y funcionó bien. No es ideal, pero hace lo que necesito.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El directorio obj no existe, por lo que gcc no puede escribir el archivo de salida allí.

Puede crearlo automáticamente desde el Makefile, pero dependiendo de lo que quiera hacer, un simple mkdir obj podría ser todo lo que necesita.

Sin embargo, parece que está ejecutando su Makefile desde el directorio src . Lo más probable es que desee ejecutarlo desde el directorio raíz de su proyecto y especificar src/ donde sea necesario. Le gustaría agregar una variable SDIR (o similar) para eso; asegúrese de eliminar ../ en LDIR , IDIR y ODIR en ese caso.

Por ejemplo, donde actualmente usa %.c , use $(SDIR)/%.c en su lugar, y mueva su Makefile apropiadamente.

over 4 years ago · Santiago Trujillo Denunciar

0

de acuerdo con su comando cli, está ejecutando su archivo MAKE en src/ , lo cual está bien, pero gcc no creará la carpeta faltante para usted. Aquí está el código que se ejecuta en mi Linux:

 $ tree . └── test2.c 0 directories, 1 file $ gcc -c -o obj/test2.o test2.c Assembler messages: Fatal error: can't create obj/test2.o: No such file or directory $ mkdir obj $ gcc -c -o obj/test2.o test2.c $ tree . ├── obj │  └── test2.o └── test2.c 1 directory, 2 files
over 4 years ago · Santiago Trujillo Denunciar

0

Toque main.o en src/obj que funcionó para mí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda