I’m having this weird problem with this makefile. Despite having all the required .c files, the compiling process stops at the first instruction, with this error.
make: *** No rule to make target 'printerTest.umps', needed by 'all'. Stop.
This exact code with the same exact files works in Debian Linux, though in Manjaro Arch Linux it return the error shown above.
Here’s the makefile.
ifneq ($(wildcard /usr/bin/umps3),) UMPS3_DIR_PREFIX = /usr LIBDIR = $(UMPS3_DIR_PREFIX)/lib/x86_64-linux-gnu/umps3 else UMPS3_DIR_PREFIX = /usr/local LIBDIR = $(UMPS3_DIR_PREFIX)/lib/umps3 endif INCDIR = $(UMPS3_DIR_PREFIX)/include/umps3/umps SUPDIR = $(UMPS3_DIR_PREFIX)/share/umps3 TDEFS = h/print.h h/tconst.h $(INCDIR)/libumps.e Makefile CFLAGS = -ffreestanding -ansi -c -mips1 -mabi=32 -mfp32 -mno-gpopt -G 0 -fno-pic -mno-abicalls # -Wall LDAOUTFLAGS = -G 0 -nostdlib -T $(SUPDIR)/umpsaout.ldscript LDCOREFLAGS = -G 0 -nostdlib -T $(SUPDIR)/umpscore.ldscript CC = mipsel-linux-gnu-gcc LD = mipsel-linux-gnu-ld AS = mipsel-linux-gnu-as -KPIC EF = umps3-elf2umps UDEV = umps3-mkdev #main target all: printerTest.umps strConcat.umps fibEight.umps fibEleven.umps terminalTest2.umps terminalTest3.umps terminalTest4.umps terminalTest5.umps %.o: %.c $(TDEFS) $(CC) $(CFLAGS) $< %.t: %.o print.o $(LIBDIR)/crti.o $(LD) $(LDAOUTFLAGS) $(LIBDIR)/crti.o $< print.o $(LIBDIR)/libumps.o -o $@ %.t.aout.umps: %.t $(EF) -a $< %.umps: %.t.aout.umps $(UDEV) -f $@ $< clean: rm -f *.o *.t *.umps
Thanks to anyone who answers in advance 🙂
Advertisement
Answer
As mentioned in the comments of the question, the problem was that the crti.o file was located on a particular hidden folder. Big thanks to the people who helped me in the comments 🙂