linux解决报错 libstdc++.so.6: version GLIBCXX

2024-07-16 852阅读

最近使用的机器有多人操作,gcc 被其他人使用apt-get更新过了,导致需要使用 gcc 进行编译的工程在编译过程中出现libstdc++.so.6: version 'GLIBCXX_3.4.30' not found的报错。这个工程之前是可以正常编译的,猜测是更新之后,相应的文件丢失了或者是文件(动态链接指向的文件)出问题。

linux解决报错 libstdc++.so.6: version GLIBCXX
(图片来源网络,侵删)
  • 根据报错信息查看libstdc++.so.6文件的详细信息:
    ls -al /path/to/libstdc++.so.6  # 这里 /path/to/libstdc++.so.6 在报错信息中会给出
    

    应该可以看到是一个软连接,那么就和我们前面的猜测一致了,是动态链接指向的文件出问题了。

    • 利用strings命令看一下指向的文件其GLIBCXX的东西是否能对应上(由于在编译工程的时候已经出现了报错,那么必然是对应不上的了,也就是查询的结果为空)
      strings libstdc++.so.6 | grep GLIBCXX_3.4.30
      # 不会有任何输出
      
      • 从系统其他地方找符合要求的libstdc++.so.6,可以使用locate命令快速查找:
        locate libstdc++.so.6
        # 应该会出来一堆的结果
        
        • 从locate命令的一堆输出中,找到/usr/lib/x86_64-linux-gnu这一条,并使用string命令看一下其GLIBCXX的东西
          strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX_3.4.30
          # 输出内容:GLIBCXX_3.4.30
          
          • 重新创建软链接/path/to/libstdc++.so.6,时其指向/usr/lib/x86_64-linux-gnu/libstdc++.so.6
            rm /path/to/libstdc++.so.6
            ln -s /usr/lib/x86_64-linux-gnu/libstdc++.so.6 /path/to/libstdc++.so.6
            

            不出意外的话,到这里前面的编译报错就不会出现了。

            在多用户的机器上,在需要使用和系统自带的版本不同的软件的时候,可以把需要的版本的软件安装到自己账户的home目录下,再通过设置环境变量了指定软件的位置即可,这样既不影响其他用户,也不会被其他用户影响。

            ———— 沃·兹基硕德

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]