AI智能
改变未来

ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: cannot allocate memory in static TLS block


Created by @Spacefan

问题描述

最近在 Ubuntu 20.04 下使用 Python3,出现一个十分奇怪的错误:

ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: cannot allocate memory in static TLS block

查阅了很多资料,最终定位为 MySQL 的问题。mysql-8.0.21 为使用更快的 TLS 模型进行编译,造成了此 Bug,详见:Bug #30981914: COMPILE WITH FASTER TLS MODEL。Ubuntu 社区也对此进行了标记,详见:ImportError libstdc++.so.6 cannot allocate memory after importing PyQt5.Qt PyQt5.QtCore and cv2。

解决问题

Ubuntu 社区标记下的 Kai Kasurinen 给出了解决方案,即将

libmysqlclient21

的版本号从

8.0.21-0ubuntu0.20.04.3

降级至

8.0.19-0ubuntu5

,具体步骤如下:

  1. 下载 libmysqlclient21_8.0.19-0ubuntu5_amd64.deb;
  2. Ubuntu 下安装之:
$ sudo dpkg -i libmysqlclient21_8.0.19-0ubuntu5_amd64.deb

Ok,问题顺利解决!

经验之谈

  • 开源软件的稳定性是老大难,所以在作业环境中尽量使用稳定版本,不要一味追求新。有时,一个 Bug 可能会花费好几天的时间才能解决,此时选择版本降级是最佳的解决方案
  • 使用 Linux 过程中出现问题后,寻找面向 Google 的解决方案。由于 Ubuntu 社区庞大,通常情况下你遇到的问题,社区已经有解决方案了。
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: cannot allocate memory in static TLS block