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}")
相关推荐
原来是猿7 小时前
网络计算器:理解序列化与反序列化(中)
linux·运维·服务器·网络·tcp/ip
AOwhisky7 小时前
虚拟化技术学习笔记
linux·运维·笔记·学习·虚拟化技术
rabbit_pro8 小时前
Docker compose部署Ollama使用模型
linux·运维·docker
Irissgwe11 小时前
六、Ext系列文件系统(2.核心原理与应用)
linux·分区··inode·软硬连接·路径缓存·ext系列文件
tkevinjd11 小时前
wsl2安装
linux·wsl·虚拟机·wsl2
故事还在继续吗11 小时前
Linux 内核模块开发实战
linux·linux内核
南境十里·墨染春水12 小时前
linux学习进展 守护进程
linux·服务器·学习
REDcker12 小时前
Android HWASan 详解:硬件标记原理、Clang 启用与排障实践
android·linux·debug·编译·clang·asan·hwasan
数智工坊13 小时前
VMware 17 Pro 中 Ubuntu 虚拟机共享 Windows 文件夹(完美踩坑版)
linux·人工智能·windows·ubuntu
广州灵眸科技有限公司13 小时前
瑞芯微(EASY EAI)RV1126B openclaw部署接入飞书
linux·网络·人工智能·算法·yolo·飞书