This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compile failure for IPNC368 "no rule to make target .../.../cmem.a470MV" in sys_server

Hi,

I use "make sysall" command to compile whole system, but encounter the following error

....................................................

Making all in subdirectory src...
make[6]: Entering directory `/home/IpCam/IPNC_36X_Raw_20100713_version2.0_install/Application/src/ipnc/ipnc_app/sys_server/src'
make[6]: Warning: File `/mnt/hgfs/sw/IPNC_36X_Raw_20100713_version2.0_install/Application/src//ipnc/ipnc_app/interface/lib/file_msg_drv.a' has modification time 1.3 s in the future
make[6]: *** No rule to make target `/mnt/hgfs/sw/IPNC_36X_Raw_20100713_version2.0_install/Application/src//dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdo/linuxutils/cmem/lib/cmem.a470MV', needed by `release/system_server'.  Stop.
make[6]: Leaving directory `/home/IpCam/IPNC_36X_Raw_20100713_version2.0_install/Application/src/ipnc/ipnc_app/sys_server/src'

..................................................

I know it is make tool can't get a rule to generate the cmem.a470MV in makefile(In fact the .a470MV file exist in the cmem/lib directory already, I think it generate early process in "make sysall". How and when build these .a470MV files in linuxutils?  "make dvsdkall" seems don't build linuxutils.), but I don't know how to resolve it(I just have a little knowege about gnu make).

Anyone can get some help?

# Makefile
#
ROOTDIR = ../../..
include $(ROOTDIR)/Rules.make

TARGET = system_server

C_FLAGS += -Wall -g -O3

CPP_FLAGS += -I$(PUBLIC_INCLUDE_DIR) \
  -I../inc \
  -D_GNU_SOURCE \
  -D_LARGEFILE64_SOURCE \
  -D_FILE_OFFSET_BITS=64 \
                $(XDC_FLAGS)

LD_FLAGS += -lfreetype -lpthread

COMPILE.c = $(MVTOOL_PREFIX)gcc $(C_FLAGS) $(CPP_FLAGS) -c
LINK.c = $(MVTOOL_PREFIX)gcc $(LD_FLAGS)

RELTARGET = release/$(TARGET)

RELCFLAGS = -fno-strict-aliasing

SOURCES = $(wildcard *.c)
HEADERS = $(wildcard *.h) $(PUBLIC_INCLUDE_DIR)/*.h

RELOBJFILES = $(SOURCES:%.c=release/%.o)

RELLDFLAGS =

 

.PHONY: clean release install

all:    release

install: release
 install -d $(EXEC_DIR)
 install $(RELTARGET) $(EXEC_DIR)
 ln -sf /tmp/localtime $(TARGET_FS)/usr/share/zoneinfo/localtime
 ln -sf /tmp/localtime $(TARGET_FS)/usr/share/zoneinfo/posixrules
 ln -sf /tmp/localtime $(TARGET_FS)/etc/localtime

release:    $(RELTARGET)

$(RELTARGET):   $(RELOBJFILES) $(APP_LIB_DIR)/file_msg_drv.a $(APP_LIB_DIR)/Appro_interface.a $(APP_LIB_DIR)/alarm_msg_drv.a $(APP_LIB_DIR)/dm355_gio_util.a $(CMEM_INSTALL_DIR)/packages/ti/sdo/linuxutils/cmem/lib/cmem.a470MV
 $(LINK.c) -o $@ $^ $(RELLDFLAGS)


$(RELOBJFILES): release/%.o: %.c $(HEADERS)
 @mkdir -p release
 $(COMPILE.c) $(RELCFLAGS) -o $@ $<

clean:
 -$(RM) -rf release  *.d

  • You shouldn't have to build cmem.a470MV.  You say it already exists, but are you sure it exists in the following location?:
    /mnt/hgfs/sw/IPNC_36X_Raw_20100713_version2.0_install/Application/src//dvsdk_2_10_01_18/linuxutils_2_24_03/packages/ti/sdo/linuxutils/cmem/lib/cmem.a470MV

    That is where 'make' is looking for it, and since it can't find that file, 'make' then tries to find a rule to build it, and since it doesn't have a rule you get the error.

    Is your CMEM_INSTALL_DIR set to '/mnt/hgfs/sw/IPNC_36X_Raw_20100713_version2.0_install/Application/src//dvsdk_2_10_01_18/linuxutils_2_24_03'?  If it is, and if there is no 'packages/ti/sdo/linuxutils/cmem/lib/cmem.a470MV' beneath that location then you should set CMEM_INSTALL_DIR to the location where you found the cmem/lib/cmem.a470MV (more correctly, set CMEM_INSTALL_DIR to the pathname component above the 'packages' directory)

    Regards,

    - Rob

  • As Rob mentioned, please look at the Rules.make and if possible share the same with us. I would recommend you to do following operation on the shell prompt and capture the log to see how the overall build happened.

    #> make sysall

     

    Regards,

    Anshuman

    PS: Please mark this post as verified, if you think it has answered your question. Thanks.

  • I think it is wrong in the "user guide ipnc36x" 3.1 Installing ipnc application. DVSDK should put in ipnc directory, and copy Rules.make in IPNetCam to ipnc directory.

  • The correct method is, construct directory structure as  "user guide ipnc36x" 3.1 Installing ipnc application said, then copy Rules.make in IPNetCam to ipnc directory.

  • I have come across the same situation about the cmem.a470MV not found problem, and I still cannot figure it out how to deal with it :(

    Is there any way to build IPNC av_server only? Why do we have to build the entire libs and examples and tests all the time?

    I am totally newbie about IPNC DM365, any help will be appreciated.