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}")
相关推荐
子牙老师4 小时前
软件虚拟化 vs 硬件虚拟化
linux·性能优化·云计算
rayyy95 小时前
Linux 下标准的 libX.so 软链接生成
linux
实心儿儿5 小时前
Linux —— 基础IO - 文件描述符
linux·运维·服务器
clear sky .5 小时前
[linux]视频实时推流项目
linux·服务器·音视频
RisunJan5 小时前
Linux命令-nisdomainname(显示或设置系统的 NIS(Network Information Service)域名)
linux·运维·服务器
小此方5 小时前
Re:Linux系统篇(四)指令篇 · 三:两套打包压缩重要指令方法+剩余指令收尾
linux·运维·服务器
冷风阿健6 小时前
Linux 源码安装 Vim 9.2.0272 完整步骤(修复 CVE-2026-34714)
linux·运维·vim
w_t_y_y6 小时前
Claude Code(二)rules
linux·运维·ubuntu
白菜欣6 小时前
Linux —《从零上手Vim:核心用法全解析》
linux·编辑器·vim