参考博客https://www.cnblogs.com/yyangblog/p/4159778.html
先附上makefile
BIN = main
SRC = $(wildcard *.c *.cpp)COMPILE_TOOL_PATH = /opt/ti-processor-sdk-linux-am57xx-evm-03.01.00.06/linux-devkit/sysroots/armv7ahf-neon-linux-gnueabi
CFLAGS += -Wl,-rpath-link,$(COMPILE_TOOL_PATH)/usr/lib \
-Wl,-rpath-link,$(COMPILE_TOOL_PATH)/lib \
-I$(COMPILE_TOOL_PATH)/usr/include \
-L$(COMPILE_TOOL_PATH)/usr/lib \
-L$(COMPILE_TOOL_PATH)/lib \
-I/home/yy/2.camera/lib/libusb-1.0.9/install/include \
-L/home/yy/2.camera/lib/libusb-1.0.9/install/lib
CFLAGS += -lusb-1.0 -lopencv_imgcodecs -lopencv_core -lopencv_highgui -lopencv_videoio -lopencv_imgproc -lOpenCL -lpthread -lrt
CC = arm-linux-gnueabihf-g++
$(BIN): $(SRC)
$(CC) -o $@ $^ $(CFLAGS)
clean:
rm -f $(BIN)
第一行:准备生成可执行模块
第二行:$(wildcard *.c *.cpp)中的wildcard:是$(wildcard *.c)来获取工作目录下的所有的.c文件列表
第三行:C/CXX编译器的参数特性:这里指定cpp文件模块所需要的指定编译器的路径。
第四行:指定编译时候需要动态链接的头文件和库的路径
$(BIN): $(SRC)
$(CC) -o $@ $^ $(CFLAGS):
将SRC中包含的所有文件,根据编译器参数特性,链接编译生成目标文件
编译工具都是依靠CC/CXX CPPFLAGS/CXXFLAGS LDFLAGS这几个变量在控制