linux下lvgl8.3动态库编译

LVGL源码官方路径介绍

名称 仓库地址 描述
lvgl https://github.com/lvgl/lvgl.git 包含了LVGL图形界面控件的源码以及少量例程
lv_drivers https://github.com/lvgl/lv_drivers.git 包含了驱动LVGL图形界面的驱动接口源代码
lv_demos https://github.com/lvgl/lv_demos.git LVGL的例程
lv_port_linux_frame_buffer https://github.com/lvgl/lv_port_linux_frame_buffer.git 适配有frame buffer的linux系统的接口

1.新建一个存放lvgl源码目录

复制代码
jamon@ubuntu:~$ mkdir lvgl
jamon@ubuntu:~$ cd lvgl
  1. 进入目录使用git命令下载源码

    jamon@ubuntu:~/lvgl git clone https://github.com/lvgl/lvgl.git jamon@ubuntu:~/lvgl git clone https://github.com/lvgl/lv_drivers.git
    jamon@ubuntu:~/lvgl git clone https://github.com/lvgl/lv_demos.git jamon@ubuntu:~/lvgl git clone https://github.com/lvgl/lv_port_linux_frame_buffer.git

源码下载后,目录结构如下:

  1. 编译lvgl源码为动态库

修改lvgl源码目录下CMakefile.txt文件,添加如下内容:

复制代码
set(CMAKE_C_COMPILER "aarch64-none-linux-gnu-gcc")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
set(CMAKE_INSTALL_PREFIX "/home/jamon/workspace/test_app/lvgl/lv_port_linux-release-v8.3/lvgl/install") #安装路径

修改后内容如下:

修改配置文件env_support/cmake/custom.cmake,编译成动态库:

  1. 编译lv_drivers源码为动态库

(1).拷贝lv_drivers目录下的lv_drv_conf_template.h到上层lvgl目录下,并命名为lv_drv_conf.h

(2).修改CMakeLists.txt文件,修改后完整内容如下:

复制代码
cmake_minimum_required(VERSION 3.12.4)

project(lv_drivers HOMEPAGE_URL https://github.com/lvgl/lv_drivers/)

# Option to build as shared library (as opposed to static), default: OFF
option(BUILD_SHARED_LIBS "Build shared as library (as opposed to static)" ON)


# 设置编译器、编译参数、安装路径
set(CMAKE_C_COMPILER "aarch64-none-linux-gnu-gcc")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
set(CMAKE_INSTALL_PREFIX "/home/jamon/workspace/test_app/lvgl/lv_port_linux-release-v8.3/lv_drivers/install") #安装路径


file(GLOB_RECURSE SOURCES ./*.c)

if (BUILD_SHARED_LIBS)
  add_library(lv_drivers SHARED ${SOURCES})
else()
  add_library(lv_drivers STATIC ${SOURCES})
endif()

add_library(lvgl_drivers ALIAS lv_drivers)
add_library(lvgl::drivers ALIAS lv_drivers)

target_include_directories(lv_drivers SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(lv_drivers SYSTEM PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/../)   # 添加包含头文件路径


find_package(PkgConfig)
pkg_check_modules(PKG_WAYLAND wayland-client wayland-cursor wayland-protocols xkbcommon)
target_link_directories(lv_drivers PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/../lvgl/install/lib)    # 添加lvgl库的路径
target_link_libraries(lv_drivers PUBLIC lvgl ${PKG_WAYLAND_LIBRARIES})

if("${LIB_INSTALL_DIR}" STREQUAL "")
  set(LIB_INSTALL_DIR "lib")
endif()

if("${INC_INSTALL_DIR}" STREQUAL "")
  set(INC_INSTALL_DIR "include/lvgl/lv_drivers")
endif()

install(
  DIRECTORY "${CMAKE_SOURCE_DIR}/"
  DESTINATION "${CMAKE_INSTALL_PREFIX}/${INC_INSTALL_DIR}/"
  FILES_MATCHING
  PATTERN "*.h"
  PATTERN ".git*" EXCLUDE
  PATTERN "CMakeFiles" EXCLUDE
  PATTERN "docs" EXCLUDE
  PATTERN "lib" EXCLUDE
  PATTERN "install" EXCLUDE)    # 安装时跳过install目录,防止.h文件循环安装

file(GLOB LV_DRIVERS_PUBLIC_HEADERS "${CMAKE_SOURCE_DIR}/lv_drv_conf.h")

set_target_properties(
  lv_drivers
  PROPERTIES OUTPUT_NAME lv_drivers
             ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
             PUBLIC_HEADER "${LV_DRIVERS_PUBLIC_HEADERS}")

install(
  TARGETS lv_drivers
  ARCHIVE DESTINATION "${LIB_INSTALL_DIR}"
  LIBRARY DESTINATION "${LIB_INSTALL_DIR}"
  RUNTIME DESTINATION "${LIB_INSTALL_DIR}"
  PUBLIC_HEADER DESTINATION "${INC_INSTALL_DIR}")
相关推荐
贵州诚鑫致达科技有限公司5 小时前
Linux的yum源怎么重启?源不是服务
linux·运维·服务器
澜山奕秋8 小时前
RHCSA
linux·运维·服务器
Web极客码9 小时前
告别流式截断:我用客户端中间件解决长文本 API 跨国 SSE 断连与数据自愈
linux·agent 图
cnnews9 小时前
Chromebox3安装Ubuntu后内存化与最小化 eMMC 写入优化
linux·运维·ubuntu
flytalei9 小时前
Ubuntu 24.04 单节点 K3s 部署实践:从环境评估到故障排查与验收
linux·运维·ubuntu
Starry-sky(jing)10 小时前
Hermes Agent 部署后怎么升级?v0.21.7 Linux 源代码版实测
linux·人工智能·ai agent·版本升级·hermes agent
水饺编程10 小时前
第2章:Linux 基础,clear 命令
linux·c语言·汇编
GeW11 小时前
新质生产力路线图Linux和数据库自主可控实践指南
linux
yunwei3711 小时前
eBPF 教程:BPF 迭代器用于内核数据导出
linux·后端·性能优化
别动我齐刘海11 小时前
实时控制学习2
linux·c++·人工智能·学习·算法