user3903854
user3903854

Reputation: 11

Makefile for cross compilation linux

I have been asked to port our product into another application.(our s/w is running on linux virtualbox)

I have got a directory of their interface files and also a example code on trying to configure their software/hardware. I see their interface files under the s/w directory. In the reference code directory, I see a makefile with the reference to their reference code.

Trying to run their reference code makefile. getting error that

make: *** No rule to make target `../    main.o" :(

Btw donot understand why SIMUDIR = -I\..\custom_simcode\ this is done in the makefile ? Also not much familiar with crosscompiler syntax !

ifndef CROSS_CC_PREFIX
  CROSS_CC_PREFIX=$(CROSS_COMPILE)
endif

PROGRAM = customer_sim

CC=$(CROSS_CC_PREFIX)gcc
LD=$(CROSS_CC_PREFIX)ld
RANLIB=$(CROSS_CC_PREFIX)corelib
CFLAGS= -g

all: $(PROGRAM)

## Include path
SIMUDIR = -I\..\custom_simcode\             
CUST_INT_INC = -I./../cust_Intf/DecHandler/inc \
             -I./../CCPU

LIBDIR = -L./../cust_Intf \
         -L./../cust_IntfApi

LIBS = -lpthread -customercif -customerapi

LDFLAGS= $(LIBDIR) $(LIBS)
SOURCE = ./../custom_simcode/main.c \
         ./../custom_simcode/custcode_primitives_init.c \
         ./../custom_simcode/custccp_primitives_init.c

CFLAGS += $(SIMUDIR) $(CUST_INT_INC) -DPRINT_IO_CONSOLE -UADAPT_CCPU_CUSTIF
OBJS =  $(SOURCE:.c=.o)

$(PROGRAM): $(OBJS)
    $(CC) -o $@ $(OBJS) $(LDFLAGS)

main.o: $(SIMUDIR)/main.c $(SIMUDIR) $(CUST_INT_INC)
    $(CC) -c -o /main.o $(SIMUDIR)/main.c


clean:
    -rm -f $(OBJS) $(OBJS) $(PROGRAM)

Upvotes: 0

Views: 4104

Answers (1)

Pauli Nieminen
Pauli Nieminen

Reputation: 1120

Your $(OBJS) list dependencies for $(PROGRAMs) with directories included but your rule for main.o doesn't have same path.

It would be better to have a generic rule to compile C files like

%.o: %.c
    $(CC) -c -o $@ $<

Then simply assign extra dependencies for each file like:

$(OBJS): $(SIMUDIR) $(CUST_INT_INC)

Upvotes: 1

Related Questions