OpenCV
SRC_PATH = $(abspath ./)
C_SRCS := $(wildcard $(SRC_PATH)/*.c)
OBJS = $(C_SRCS:.c=.o)
CPP_SRCS := $(wildcard $(SRC_PATH)/*.cpp)
OBJS += $(CPP_SRCS:.cpp=.o)
OPENCV_FLAG := $(shell pkg-config --cflags --libs opencv4)
LIBPNG_FLAG := -DUSING_LIBPNG_1_2
OPENGL_FLAG := -lGL -lGLU -lglut
main: $(OBJS)
g++ -o main $(OBJS) -Wall -fPIC -lpthread -lm $(OPENCV_FLAG) $(LIBPNG_FLAG) $(OPENGL_FLAG)
.PHONY : clean
%.o : %.c
gcc -o $@ -c -g -fPIC $< -isystem -I.
%.o : %.cpp
g++ -o $@ -c -g -fPIC -std=c++11 $< -isystem -I. -I/usr/local/include/opencv4/
clean:
-rm *.o
-rm main
C 基础
objects = main.o test.o
main: $(objects)
gcc -o main $(objects) -Wall -lpthread -lm
.PHONY : clean
%.o : %.c
gcc -c $<
clean:
rm *.o
rm main
TDA4
GCC_LINUX_ARM_ROOT := /media/sdb/ADAS_TDA4_AVP_V07_01/ti-processor-sdk-rtos-j721e-evm-07_01_00_11/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/
LINUX_FS_PATH := /media/sdb/ADAS_TDA4_AVP_V07_01/ti-processor-sdk-rtos-j721e-evm-07_01_00_11/targetfs/
TARGET_BUILD=debug
TARGET := app_ipc
CSOURCES := $(wildcard *.c)
IDIRS += $(GCC_LINUX_ARM_ROOT)/aarch64-linux-gnu/libc/usr/include/
IDIRS += $(LINUX_FS_PATH)/usr/include/
IDIRS += $(LINUX_FS_PATH)
LDIRS += $(GCC_LINUX_ARM_ROOT)/aarch64-linux-gnu/libc/usr/lib/
LDIRS += $(LINUX_FS_PATH)/usr/lib/
STATIC_LIBS +=
SYS_SHARED_LIBS += stdc++ m rt pthread ti_rpmsg_char
ADDITIONAL_STATIC_LIBS +=
CC = $(GCC_LINUX_ARM_ROOT)/bin/aarch64-none-linux-gnu-gcc
LD = $(GCC_LINUX_ARM_ROOT)/bin/aarch64-none-linux-gnu-g++
AR = $(GCC_LINUX_ARM_ROOT)/bin/aarch64-none-linux-gnu-ar
CFLAGS += -DLINUX -DJ7 -DA72="A72" -DTARGET_NUM_CORES=1
CFLAGS += -DTARGET_ARCH=64 -DARCH_64 -DARM -DTARGET_BUILD=2
CFLAGS += -fPIC
CFLAGS += -Wall -fms-extensions -Wno-write-strings -Wno-format-security
CFLAGS += -fno-short-enums
ifeq ($(TARGET_BUILD),debug)
CFLAGS += -ggdb -ggdb3 -gdwarf-2 -D_DEBUG_=1
else ifneq ($(filter $(TARGET_BUILD),release ),)
CFLAGS += -O3 -DNDEBUG
endif
CFLAGS += -mlittle-endian -mcpu=cortex-a72
CFLAGS += -Wno-format-truncation
ifdef LOGFILE
LOGGING:=&>$(LOGFILE)
else
LOGGING:=
endif
CPLDFLAGS = -rdynamic
CPLDFLAGS += -Wl,--cref
CPLDFLAGS += -fPIC
CPLDFLAGS += -Wall -fms-extensions -Wno-write-strings -Wno-format-security
CPLDFLAGS += -fno-short-enums
ifeq ($(TARGET_BUILD),debug)
CPLDFLAGS += -ggdb -ggdb3 -gdwarf-2 -D_DEBUG_=1
else ifneq ($(filter $(TARGET_BUILD),release ),)
CPLDFLAGS += -O3 -DNDEBUG
endif
CPLDFLAGS += -mlittle-endian -mcpu=cortex-a72
INCLUDES:=$(foreach inc,$(IDIRS),-I$(inc))
LINK_START_GROUP = -Wl,--start-group
LINK_END_GROUP = -Wl,--end-group
LIBRARIES:= $(foreach ldir,$(LDIRS),-L$(ldir)) \
-Wl,-Bstatic \
$(LINK_START_GROUP) \
$(foreach lib,$(STATIC_LIBS),-l$(lib)) \
$(foreach lib,$(SYS_STATIC_LIBS),-l$(lib)) \
$(foreach lib,$(ADDITIONAL_STATIC_LIBS),-l:$(lib)) \
$(LINK_END_GROUP) \
-Wl,-Bdynamic \
$(foreach lib,$(SHARED_LIBS),-l$(lib)) \
$(foreach lib,$(SYS_SHARED_LIBS),-l$(lib)) \
$(foreach lib,$(PLATFORM_LIBS),-l$(lib))
BIN = $(addsuffix .out,$(TARGET))
MAP = $(addsuffix .map,$(TARGET))
ROOT_PATH = $(abspath .)
BUILD_PATH = $(ROOT_PATH)/build
OUT_PATH = $(ROOT_PATH)/out
SDIR := $(ROOT_PATH)
ODIR := $(BUILD_PATH)
OBJS = $(CSOURCES:%.c=$(BUILD_PATH)/%.o)
.PHONY: all
all: $(BIN)
$(BIN): check_path $(OBJS)
@echo Linking $@
$(LD) $(CPLDFLAGS) $(OBJS) $(LIBRARIES) -o $(OUT_PATH)/$(BIN) -Wl,-Map=$(OUT_PATH)/$(MAP) > /dev/null
$(ODIR)/%.o: $(SDIR)/%.c
@echo [GCC] Compiling C99 $(notdir $<)
$(CC) -std=gnu99 -c $(INCLUDES) $(CFLAGS) -MMD -MF $(ODIR)/$*.dep -MT '$(ODIR)/$*.o' $< -o $@ $(LOGGING)
check_path:
@if [ ! -d $(OUT_PATH) ]; then mkdir -p $(OUT_PATH); fi
@if [ ! -d $(BUILD_PATH) ]; then mkdir -p $(BUILD_PATH); fi
@echo $(OBJS)
install:
@if [ -d /media/root/rootfs/opt/vision_apps ]; then cp -rpf $(OUT_PATH)/$(BIN) /media/root/rootfs/opt/vision_apps ; fi
sync
.IGNORE: clean
clean:
-rm -rf $(BUILD_PATH)
-rm -rf $(OUT_PATH)