刚开始学Linux关于makefile实在是看不懂,遇到以下问题,往大神不吝赐教。
我的tina版本是3.5.1。
在路径 /home/(name)/tina351/package/gui/littlevgl-8/ 下有5个文件夹
分别是
lv_drivers
lv_examples
lv_lvgl
lv_monitor
lv_project
其中4个是官方SDK里 LVGL目录里原本的。
lv_project是我照猫画虎弄的。
内部有 一个 src文件夹 和 一个makefile ,都是为从 lv_examples 中拷贝过来的。
试着编译,运行这个工程没有问题。现在,想在工程中使用 modbus库。遇到了问题。makefile如下。
#
# Makefile
#
CC ?= gcc
LVGL_DIR_NAME ?= lvgl
LVGL_DIR ?= ${shell pwd}
CFLAGS ?= -O3 -g0 -I$(LVGL_DIR)/ -Wall -Wshadow -Wundef -Wmissing-prototypes -Wno-discarded-qualifiers -Wall -Wextra -Wno-unused-function -Wno-error=strict-prototypes -Wpointer-arith -fno-strict-aliasing -Wno-error=cpp -Wuninitialized -Wmaybe-uninitialized -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wno-cast-qual -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wformat-security -Wno-ignored-qualifiers -Wno-error=pedantic -Wno-sign-compare -Wno-error=missing-prototypes -Wdouble-promotion -Wclobbered -Wdeprecated -Wempty-body -Wtype-limits -Wshift-negative-value -Wstack-usage=2048 -Wno-unused-value -Wno-unused-parameter -Wno-missing-field-initializers -Wuninitialized -Wmaybe-uninitialized -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wtype-limits -Wsizeof-pointer-memaccess -Wno-format-nonliteral -Wpointer-arith -Wno-cast-qual -Wmissing-prototypes -Wunreachable-code -Wno-switch-default -Wreturn-type -Wmultichar -Wno-discarded-qualifiers -Wformat-security -Wno-ignored-qualifiers -Wno-sign-compare
LDFLAGS ?= -lm -lmodbus
BIN = lv_project
#Collect the files to compile ./tupian.c
MAINSRC = ./ui_main.c ./usr_ui.c ./touch_5_points_cal.c ./main.c
include $(LVGL_DIR)/lvgl/lvgl.mk
include $(LVGL_DIR)/lv_drivers/lv_drivers.mk
#include $(LVGL_DIR)/lv_demos/lv_demo.mk
OBJEXT ?= .o
AOBJS = $(ASRCS:.S=$(OBJEXT))
COBJS = $(CSRCS:.c=$(OBJEXT))
MAINOBJ = $(MAINSRC:.c=$(OBJEXT))
SRCS = $(ASRCS) $(CSRCS) $(MAINSRC)
OBJS = $(AOBJS) $(COBJS)
## MAINOBJ -> OBJFILES
all: default
%.o: %.c
@$(CC) $(CFLAGS) $(LDFLAGS) $(LOCAL_CFLAGS) -c $< -o $@
@echo "CC $<"
default: $(AOBJS) $(COBJS) $(MAINOBJ)
$(CC) -o $(BIN) $(MAINOBJ) $(AOBJS) $(COBJS) $(LDFLAGS)
clean:
rm -f $(BIN) $(AOBJS) $(COBJS) $(MAINOBJ)
在 程序中包含头文件 #include <modbus/modbus.h> 编译不会报错。
但是,代码中调用 mb = modbus_new_rtu(...) 函数就会报错。
...undefined reference to `modbus_new_rtu'...
求大神解惑,为该怎么修改makefile才能在编译时找到这个库。
这个库,在根目录下 make menuconfig -> Libraries 下 已经 * 勾选 libmodbus
离线