Qt运行xxx.so can not open shared object file
找不到 .so文件,确认.pro的 LIB项填写正确后,为环境变量设置 LD_LIBRARY_PATH=xxx。
LD_LIBARY_PATH是一个LINUX环境变量,用于程序运行时查找共享库.so文件的路径。
开发场景
export仅限于当前shell窗口临时变量设置,如果想要持久化可将export语句写入
~/.bashrc文件或者~/.profile文件。
/etc/profile
在用户登录时被加载。
~/.profile
是用户级配置文件,仅对当前用户生效。
/.bashrc
用户级的配置文件,仅对当前用户生效。设置用户在交互式 shell 中的个性化配置(例如命令提示符、别名、函数等)。在启动新的交互式 shell 时加载(例如打开终端)。
~/.bashrc
会被 ~/.bash_profile
或 ~/.profile
文件引用,以确保在登录时加载用户配置。
生产场景
ld.so是运行时链接器,ld是编译时链接器。
运行时链接器的查找路径配置在
1
可以尝试将库文件软链接到默认的库路径中(如 /usr/lib
或 /usr/local/lib
)。这样,动态链接器可以在默认路径中找到库文件。
2
ld.so.conf
是 Linux 系统中用于配置动态链接器(ld.so
或 ld-linux.so
)的配置文件,它定义了运行时链接器在查找共享库时的搜索路径。
sudo ldconfig重新加载配置。
ldconfig -p | grep libAudioRender.so 验证能否找到动态库。
有时动态库路径下明明有文件却找不到,可能是因为动态库依赖其他库
通过ldd xxx查看依赖,
比如 ldd 可执行文件
ldd xx.so文件