您尚未登录。

楼主 # 2023-06-02 20:54:19

gaocangjian
会员
注册时间: 2022-08-08
已发帖子: 32
积分: 39

TINA中如何调用库文件

刚开始学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

mad

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn