C和CPP联合交叉编译,出现arm-himix200-linux-g++:linkerin。。。
最近在⽤海思的makefile编译⼀些库,在遇到C和CPP联合混编的时候出现⼀些问题,以此做个记录Makefile如下:
SMP_SRCS :=$(shell find ./ -name "*.c")
SMP_SRCPPS :=$(shell find ./ -name "*.cpp")
OBJS :=$(SMP_SRCS:%.c=%.o)
CPPOBJS :=$(SMP_SRCPPS:%.cpp=%.o)
#新增链接头⽂件,使⽤-I参数
INC_FLAGS := -I$(LOCAL_PATH)/src
#编译.so需要⽤到-fPIC -shared编译选项
CFLAGS += -fPIC -shared
CFLAGS +=$(COMM_INC)
#链接第三⽅库
LFLAG := -llog
#指定第三⽅库的路径
LFLAG += -L$(LIB_PATH)
TARGET := libxxx.so
TARGET_PATH:=$(LIB_PATH)
CFLAGS +=$(INC_FLAGS)
.PHONY : clean all
all: $(TARGET)
$(TARGET):$(COMM_OBJ)$(OBJS)$(CPPOBJS)
@$(CPP)$(CFLAGS) -lpthread -lm -o $(TARGET_PATH)/$@ $^ -Wl,--start-group $(LFLAG)$(LIBS) -Wl,--end-group
#$(CPPOBJS):%.o:%.cpp
# @$(CPP) -c $< $(CFLAGS) -lpthread -lm -o $@ -Wl,--start-group $(LFLAG) $(LIBS) -Wl,--end-group
#这⾥指定cpp⽂件⽤arm-himix200-linux-g++去编译,但是后⾯不需要跟LFLAG和LIBS,所以去掉就正常了
$(CPPOBJS):%.o:%.cpp
@$(CPP) -c $<$(CFLAGS) -lpthread -lm -o $@
clean:
@rm -f $(TARGET_PATH)/$(TARGET)
@rm -f $(OBJS)
@rm -f $(CPPOBJS)
@rm -f $(COMM_OBJ)
makefile phony以上CC和CPP别的地⽅已经定义过了,相关的变量也是定义过了,就不全部贴出来了。另外虽然TARGET下⽤的也是CPP,但是实际编译⾥⾯的.c⽂件还是⽤的gcc⼯具
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论