关于liblvgl.so文件其实已经存在于当前目录下(可以看到ls命令列出了该文件),但程序仍然找不到它的原因及其解决方法:
这是因为 Linux 系统默认不会在当前目录搜索共享库。解决方法如下:
这样既符合 Linux 的文件系统规范,又能保证系统能稳定找到该库文件。
临时解决(当前终端有效):
# 将当前目录添加到共享库搜索路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.# 再次运行程序 ./demo
永久解决方法:
如果需要长期运行这个程序,可以将当前目录添加到系统的库搜索路径:# 假设当前目录是/root(根据实际情况修改) echo "$PWD" >> /etc/ld.so.conf.d/lvgl.conf ldconfig # 更新库缓存# 之后就可以直接运行 ./demo
另一种简单方式:
运行程序时直接指定库路径:LD_LIBRARY_PATH=. ./demo
在 Linux 系统中,共享库(.so 文件)通常遵循标准的目录布局,常见的存放位置如下:
系统级库目录(适用于所有用户):
/lib
:存放系统启动和基本运行所需的核心共享库/lib64
:64 位系统的核心共享库(部分系统使用)/usr/lib
:用户级的标准共享库/usr/lib64
:64 位系统的用户级标准共享库/usr/local/lib
:本地编译安装的共享库(推荐使用)
应用程序专属目录:
- 很多程序会将自己的库文件放在
/opt/应用名/lib
目录下 - 或者程序安装目录下的
lib
子目录(如/usr/local/your_app/lib
)
- 很多程序会将自己的库文件放在
自定义目录:
如果是自己开发的库,除了上述目录,也可以放在/usr/lib/lvgl
这类专用子目录中,然后通过配置/etc/ld.so.conf.d/
下的配置文件让系统识别。