• 更改libstdc++版本流程


    在运行程序时报错:

    1. /lib/libstdc++.so.6: version `CXXABI_1.3.11' not found
    2. /lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found
    1. 查找原因

      未找到 CXXABI_1.3.11 和 GLIBCXX_3.4.26 , 首先查看一下都有哪些版本的 GLIBCXX 和 CXXABI :

      使用命令查找GLIBCXX:

      strings /lib/libstdc++.so.6 | grep GLIBCXX

      输出:

      1. GLIBCXX_3.4
      2. GLIBCXX_3.4.1
      3. GLIBCXX_3.4.2
      4. GLIBCXX_3.4.3
      5. GLIBCXX_3.4.4
      6. GLIBCXX_3.4.5
      7. GLIBCXX_3.4.6
      8. GLIBCXX_3.4.7
      9. GLIBCXX_3.4.8
      10. GLIBCXX_3.4.9
      11. GLIBCXX_3.4.10
      12. GLIBCXX_3.4.11
      13. GLIBCXX_3.4.12
      14. GLIBCXX_3.4.13
      15. GLIBCXX_3.4.14
      16. GLIBCXX_3.4.15
      17. GLIBCXX_3.4.16
      18. GLIBCXX_3.4.17
      19. GLIBCXX_3.4.18
      20. GLIBCXX_3.4.19
      21. GLIBCXX_3.4.20
      22. GLIBCXX_3.4.21
      23. GLIBCXX_3.4.22
      24. GLIBC_2.17
      25. GLIBC_2.18

      使用命令查找CXXABI:

      strings /lib/libstdc++.so.6 | grep CXXABI

      输出:

      1. CXXABI_1.3
      2. CXXABI_1.3.1
      3. CXXABI_1.3.2
      4. CXXABI_1.3.3
      5. CXXABI_1.3.4
      6. CXXABI_1.3.5
      7. CXXABI_1.3.6
      8. CXXABI_1.3.7
      9. CXXABI_1.3.8
      10. CXXABI_1.3.9
      11. CXXABI_1.3.10
      12. CXXABI_TM_1
      13. CXXABI_1.3
      14. CXXABI_1.3.2
      15. CXXABI_1.3.6
      16. CXXABI_1.3.9
      17. CXXABI_1.3.1
      18. CXXABI_1.3.5
      19. CXXABI_1.3.8
      20. CXXABI_1.3.4
      21. CXXABI_TM_1
      22. CXXABI_1.3.7
      23. CXXABI_1.3.10
      24. CXXABI_1.3.3

      查看后确实没有CXXABI_1.3.11和GLIBCXX_3.4.26

      在/lib目录下使用命令查看libstdc++.so.6的软链接:(\为连接符)

      ls -l | grep libstdc\+\+.so.6

      输出:

      1. lrwxrwxrwx 1 root root 19 Jun 7 16:32 libstdc++.so.6 -> libstdc++.so.6.0.22
      2. -rwxrwxr-x 1 root root 1947272 Mar 16 21:04 libstdc++.so.6.0.22
      3. -rw-rw-r-- 1 root root 2512 Mar 16 21:04 libstdc++.so.6.0.22-gdb.py

      发现libstdc++.so.6的软链接是指向libstdc++.so.6.0.22的,相当于系统中设置了libstdc++.so.6的快捷方式为6.0.22版本的libstdc++, 所以就需要将此版本置换为至少6.0.26以上的版本.

    2. 解决问题

      先将libstdc++.so.6.0.28放到/lib下
      (可以使用此链接下载:
      http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip
      我个人使用的是arm版的6.0.28版本,版本选择看个人需要
      )

      在lib目录下先删除libstdc++.so.6.0.22的软链接:

      rm libstdc++.so.6
      

      再创建libstdc++.so.6.0.28的软链接:

      ln -s libstdc++.so.6.0.28 libstdc++.so.6
      

      令libstdc++.so.6指向libstdc++.so.6.0.28.

      此时再查看libstdc++的版本:

      strings /lib/libstdc++.so.6 | grep GLIBCXX
      

      输出:

      1. GLIBCXX_3.4
      2. GLIBCXX_3.4.1
      3. GLIBCXX_3.4.2
      4. GLIBCXX_3.4.3
      5. GLIBCXX_3.4.4
      6. GLIBCXX_3.4.5
      7. GLIBCXX_3.4.6
      8. GLIBCXX_3.4.7
      9. GLIBCXX_3.4.8
      10. GLIBCXX_3.4.9
      11. GLIBCXX_3.4.10
      12. GLIBCXX_3.4.11
      13. GLIBCXX_3.4.12
      14. GLIBCXX_3.4.13
      15. GLIBCXX_3.4.14
      16. GLIBCXX_3.4.15
      17. GLIBCXX_3.4.16
      18. GLIBCXX_3.4.17
      19. GLIBCXX_3.4.18
      20. GLIBCXX_3.4.19
      21. GLIBCXX_3.4.20
      22. GLIBCXX_3.4.21
      23. GLIBCXX_3.4.22
      24. GLIBCXX_3.4.23
      25. GLIBCXX_3.4.24
      26. GLIBCXX_3.4.25
      27. GLIBCXX_3.4.26
      28. GLIBCXX_3.4.27
      29. GLIBCXX_3.4.28
      strings /lib/libstdc++.so.6 | grep CXXABI
      

      输出:

      1. CXXABI_1.3
      2. CXXABI_1.3.1
      3. CXXABI_1.3.2
      4. CXXABI_1.3.3
      5. CXXABI_1.3.4
      6. CXXABI_1.3.5
      7. CXXABI_1.3.6
      8. CXXABI_1.3.7
      9. CXXABI_1.3.8
      10. CXXABI_1.3.9
      11. CXXABI_1.3.10
      12. CXXABI_1.3.11
      13. CXXABI_1.3.12
      14. CXXABI_TM_1
       

      而以下两个版本都已存在:

      1. `CXXABI_1.3.11'
      2. `GLIBCXX_3.4.26'

      此时再运行程序已经可以正常运行了.

  • 相关阅读:
    c++面试题汇总(不定期更新...)
    易优cms小程序插件升级到2.1版本
    【LeetCode】最长公共子序列(动态规划)
    【Linux操作系统】——安装CentOS系统
    进化算法------代码示例
    上周热点回顾(9.9-9.15)
    2022年全球市场肌腱固定螺钉总体规模、主要生产商、主要地区、产品和应用细分研究报告
    若依(Ruoyi-Vue-Plus版)——1.登录(SaToken)
    CSS总结第八天 HTML5 + CSS3提高
    打破行业界限,实现共赢的商业模式
  • 原文地址:https://blog.csdn.net/mjj1024/article/details/126020053