Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

655
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

0

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

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda