嘉楠勘智k230开发板上手记录(三)--K230_GPU应用实战

按照K230_GPU应用实战.md

一、开发环境的准备

在src下创建文件夹,并在文件夹中创建Makefile

mkdir my_vglite_code
cd my_vglite_code

Makefile

# SDK地址
K230SDK ?= /root/k230/k230_sdk-main
# 生成的可执行文件名字
BIN := test-vglite

# 指定交叉编译器
CC := "$(K230SDK)/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin/riscv64-unknown-linux-gnu-gcc"
CXX := "$(K230SDK)/toolchain/Xuantie-900-gcc-linux-5.10.4-glibc-x86_64-V2.6.0/bin/riscv64-unknown-linux-gnu-g++"

# 指定头文件搜索路径 
CFLAGS := -I"$(K230SDK)/src/little/buildroot-ext/package/vg_lite/inc" -I"$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/host/riscv64-buildroot-linux-gnu/sysroot/usr/include"
CFLAGS += -I "$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/host/riscv64-buildroot-linux-gnu/sysroot/usr/include/drm"

# 指定库文件搜索路径
LDFLAGS += -L"$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/target/usr/lib"

# 指定链接库
LDFLAGS += -lvg_lite -lvg_lite_util -ldrm

# 编译参数
LDFLAGS += -Wall -g

CXXFLAGS := $(CFLAGS) 
CXXFLAGS += $(LDFLAGS)
# 代码所在目录
SRCDIR := ../my_vglitec_code

# 编译结果目录
OBJDIR := ../my_vglitec_code/objs

# wildcard 用于得到指定文件夹下所有指定匹配模式的文件
SRCS := $(wildcard $(SRCDIR)/*.c) $(wildcard $(SRCDIR)/*.cpp)

# patsubst替换字符 filter函数的作用是从字符串列表中过滤出匹配指定通配模式的字符串
OBJS := $(patsubst $(SRCDIR)/%.c, $(OBJDIR)/%.o, $(filter %.c, $(SRCS))) \
        $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(filter %.cpp, $(SRCS)))
DEPS := $(patsubst $(SRCDIR)/%.c,$(OBJDIR)/%.d,$(filter %.c, $(SRCS))) \
        $(patsubst $(SRCDIR)/%.cpp,$(OBJDIR)/%.d,$(filter %.cpp, $(SRCS)))

all: $(BIN)

$(OBJDIR):
	mkdir -p $(OBJDIR)

$(BIN): $(OBJS)
	$(CXX) $(CXXFLAGS) $(OBJS) -o $@

$(OBJDIR)/%.o: $(SRCDIR)/%.c | $(OBJDIR)
	$(CC) $(CFLAGS) -MMD -c $< -o $@

$(OBJDIR)/%.o: $(SRCDIR)/%.cpp | $(OBJDIR)
	$(CXX) $(CXXFLAGS) -MMD -c $< -o $@

-include $(DEPS)

clean:
	rm -rf $(OBJDIR) $(BIN)

install:
	cp $(BIN) "$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/target/usr/bin"

uninstall:
	rm "$(K230SDK)/output/k230_evb_defconfig/little/buildroot-ext/target/usr/bin/$(BIN)"

.PHONY: all clean install

二、编译

1. vglite_drm

官方文档对于编译的实例没有讲的很清楚。文档给了Makefile,但是make需要的代码没有说明白。我在k230_sdk里搜索vglite_drm才找到文件夹的位置

 

最后一行就是文档里说的vglite_drm

2. 需要的代码

把vglite_drm下的triangle.c和vglite_drm.c拷贝到刚刚创建的文件夹中,然后把vglite_drm上一级目录的drm.c也拷贝到文件夹中。

关键的一点是,sdk/src中有多个drm.c

 根据vglite_drm文件夹中的Makefile推断第二个是我们需要的。第一个中的代码跟第二个有差别,不清楚具体有什么用。第三个猜测是用于生成libdrm.so,因为他跟libdrm.so一样都没有drm_init和drm_exit等函数的定义 。

这是拷贝完成的文件夹结构

 3. 编译

 4. 上传k230并运行

上传

运行

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值