From e8dab707051aa4096485ccdd43fba2b841ca7c80 Mon Sep 17 00:00:00 2001 From: superconvert <48017165+superconvert@users.noreply.github.com> Date: Tue, 13 Sep 2022 08:14:16 +0800 Subject: [PATCH] Update xfce4.md --- xfce4.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xfce4.md b/xfce4.md index 2bcf780..15bcb11 100644 --- a/xfce4.md +++ b/xfce4.md @@ -312,7 +312,7 @@ Xorg 就是我们通常说的 xserver, 有关整个流程的调试,我们可 ```shell env LD_LIBRARY_PATH="/root/test/build/test/a/usr/lib:/root/test/build/test/a/usr/local/lib:/root/test/build/test/a/usr/lib/x86_64-linux-gnu:/root/test/build/test/a/opt/libjpeg-turbo/lib64" DBUS_SESSION_BUS_ADDRESS="unix:path=/var/run/dbus/session_bus_socket" strace -f xrdp-sesman -n ``` -基本上 xrdp-sesman 会启动 Xorg ( xserver ), Xorg 会通过 dbus-1 与别的组件进行通讯;还会启动 xsession, 还会启动 xrdp-chansrv,从上述我们可以得知,这些组件都必须启动成功,否则,就会看不到图像界面。我们通过 strace -f 跟踪得知 xrdp-sesman 是通过接口 execve 启动的 Xorg ,这个接口执行后,来自父进程的环境变量将会被清除,导致 LD_LIBRARY_PATH 失效,因此 Xorg 所依赖的动态库就找不到,解决方法就是把库直接拷贝到系统库的位置,就行,比如: +基本上 xrdp-sesman 会启动 Xorg ( xserver ), Xorg 会通过 tcp 或 Unix socket 与 xclient 进行通讯;还会启动 xsession, 还会启动 xrdp-chansrv,从上述我们可以得知,这些组件都必须启动成功,否则,就会看不到图像界面。我们通过 strace -f 跟踪得知 xrdp-sesman 是通过接口 execve 启动的 Xorg ,这个接口执行后,来自父进程的环境变量将会被清除,导致 LD_LIBRARY_PATH 失效,因此 Xorg 所依赖的动态库就找不到,解决方法就是把库直接拷贝到系统库的位置,就行,比如: ```shell cp /root/smart-os/build/test/a/usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 /usr/lib/x86_64-linux-gnu/ ```