神经蛙
2024-04-29 00:13 deepin
我在别的系统上是这样做的:在etc/profile.d里放一个脚本文件,用这个脚本文件删除/etc/ld.so.preload,这样就不至于影响系统程序的运行了。等进入桌面后再利用一个自启动程序把ld.so.preload文件放到/etc里去。初步测试能达到我的目的
到了UOS里,这个办法不管用了。
删除动作应该进行得越早越好
Reply Like 0 View the author
我在别的系统上是这样做的:在etc/profile.d里放一个脚本文件,用这个脚本文件删除/etc/ld.so.preload,这样就不至于影响系统程序的运行了。等进入桌面后再利用一个自启动程序把ld.so.preload文件放到/etc里去。初步测试能达到我的目的
到了UOS里,这个办法不管用了。
删除动作应该进行得越早越好
preload意思是预加载(优先加载),在/usr/lib顺序之上
不知道是不是可以查看dmesg 日志发现更多问题呢
我在/etc/profile里加了一个环境变量:
export LD_PRELOAD=$LD_PRELOAD:/opt/dss/dsshook.so
解决了。不会影响系统启动了。经多次验证,不是so的问题,可能启动时就是不能有任何的preload,某个地方过不去
我做了一个包含hook 函数的so,主要hook了x11库、xcb库的一些函数,还有一个Qt函数,一个gtk函数,用来实现防截图、防止访问剪贴板、检测另存为对话框、检测打印对话框等功能。
然后放了一个ld.so.preload文件在etc目录里,内容是这样的:
现在有一个问题:如果这个配置文件存在,系统就无法启动,会卡在LOGO那里。如果重启前手动删掉这个preload文件,等登录进去后再放进去,那就没有问题
引起错误的原因在哪里呢?是so文件本身有问题,还是preload生效的时机不对。
怎么解决呢