运行Vitis 2021.2出现静态TLS加载失败错误的原因及解决方法
问题原因与解决方法
原因
RHEL 7.7搭载的glibc版本对进程可加载的静态TLS(Thread-Local Storage)对象数量有默认上限,而Vitis 2021.2中的libxv_platform.so等依赖库大量使用静态TLS,触发了系统的加载限制,导致dlopen无法继续加载对象。
解决方法
方法一:调整静态TLS可用槽数
在启动Vitis前执行以下命令,通过环境变量增大静态TLS的容纳上限:export LD_PRELOAD=/lib64/libpthread.so.0 export TLS_SLOTS=1024之后再运行
./vitis即可。方法二:强制使用动态TLS模式
如果方法一无效,可通过以下环境变量让glibc优先使用动态TLS分配,绕过静态TLS的数量限制:export LD_ASSUME_KERNEL=3.10.0 export LD_PRELOAD=/usr/lib64/libstdc++.so.6完成设置后启动Vitis。
方法三:升级系统glibc版本(谨慎操作)
RHEL 7默认glibc版本较低,若系统允许升级,可尝试更新glibc到更高版本。注意:直接升级系统核心库可能影响稳定性,建议先在测试环境验证。
内容的提问来源于stack exchange,提问作者AlGor
相关产品推荐
相关产品推荐

