在使用核间通信是,在src/big/mpp/userapps/sample/目录下使用#include "k_ipcmsg.h"报错

Viewed 154

在使用核间通信是,在src/big/mpp/userapps/sample/目录下使用#include "k_ipcmsg.h",编译报错,
是路径makfile的路径没有设置吗?
在原有的makefile中添加了下面一行
IPCMSG_CFLGAS = -I$(CDK_SRC_DIR)/user/component/ipcmsg/include
同时在编译的时候跟在别的变量后面加入新增的变量
@$(CC) $(CC_CFLAGS) $(LOCAL_CFLAGS) $(BSP_CFLGAS) $(RTSMART_CFLAGS) $(MPP_USER_CFLGAS) $(IPCMSG_CFLGAS) -c $< -o $@

这么改的话编译能过,改的正确吗?

以下是makefile 文件代码

include $(MPP_SRC_DIR)/userapps/sample/mpp.mk
include $(MPP_SRC_DIR)/userapps/sample/rt-smart.mk

CURRECT_DIR_NAME=$(shell basename pwd)
LOCAL_SRC_DIR = $(shell pwd)
BIN = $(MPP_SRC_DIR)/userapps/sample/elf/$(CURRECT_DIR_NAME).elf
LIBPATH = $(MPP_LIB_PATH)
LIBS = $(MPP_LIBS)

IPCMSG_CFLGAS = -I$(CDK_SRC_DIR)/user/component/ipcmsg/include

LOCAL_CFLAGS = -I$(LOCAL_SRC_DIR)

SRCS = $(wildcard $(LOCAL_SRC_DIR)/*.c)

OBJS = $(patsubst %.c,%.o,$(SRCS))

all: $(BIN)
@-rm -f $(OBJS)
echo "${PWD}/Makefile all"

$(OBJS): %.o : %.c
@$(CC) $(CC_CFLAGS) $(LOCAL_CFLAGS) $(BSP_CFLGAS) $(RTSMART_CFLAGS) $(MPP_USER_CFLGAS) $(IPCMSG_CFLGAS) -c $< -o $@

$(BIN): $(OBJS)
$(CC) -o $(BIN) $(LINKFLAG) -Wl,--whole-archive -Wl,--no-whole-archive -n --static $(OBJS) -L$(LIBPATH) -Wl,--start-group $(LIBS) -Wl,--end-group

clean:
echo "${PWD}/Makefile clean"
-rm -rf $(BIN)
-rm -f $(OBJS)

.PHONY: all clean

1 Answers

可以,遵循Makefile语法规则,只要正确包含ipcmsg 库即可。

我这边已经添加了 头文件,
#include "sample_define.h"
#include "k_ipcmsg.h"
makefile中也添加的对应的路径,但是编译的时候还是提示 未定义的引用,是哪里弄得不对吗?
涉及到ipcmsg的函数都是类似这样的报错
undefined reference to `kd_ipcmsg_add_service'

是因为缺少库文件吗?这个库文件怎么添加呢libipcmsg.a

需要增加libipcmsg.a库,k230_sdk/src/common/cdk/user/component/ipcmsg/sample,这里是ipcmsg demo,可以参考下里面的Makefile。