关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)

这篇具有很好参考价值的文章主要介绍了关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

关于version `GLIBC_2.34’ not found解决办法

问题来源

源代码

#include "stdio.h"

void main(void)
{
    printf("Hello World!");
}

使用arm-linux-gnueabihf-gcc交叉编译

arm-linux-gnueabihf-gcc main.c -o main

部署到开发板后运行报错

debian@npi:~$ ./main 
./main: /lib/arm-linux-gnueabihf/libc.so.6: version `GLIBC_2.34' not found (required by ./main)

查询资料

使用bing和百度搜索 version `GLIBC_2.34’ not found 得到的解决办法归纳为一下几点

  • 升级部署环境系统版本,降低打包编译环境的系统版本
  • 在部署环境中下载符合版本的gblc库(一般高于原来的环境)
  • 使用工具gblc-all-in-one文档描述是

这是一个在ubuntu环境下随意更改文件glibc版本的便捷工具

  • 使用静态链接库

    方法一:可以完美解决,但是太傻了,作为开发人员总不能每次开发一个系统就换自己系统的版本吧。
    方法二:看运气,说不定升级了以后开发板的系统命令就用不了了,所以不建议随意升级这个库,具体原因可以
    自行百度。
    方法三:没看懂原理(刚入门)所以也没去尝试。
    方法四:使用静态链接库,缺点是不确定以后会不会出什么问题,而且编译后的文件体积巨大。

整理思路

我查询了交叉编译的指令具体和GCC差不了多少其中有一 -l-L 命令。用于指定链接库的链接目录。具体用法参见GCC -l选项:手动添加链接库,所以我想能不能在编译的的时候指定需要链接的库或目录,这样就不会需要改变双方的环境了。


解决步骤

查找网络发现在编译c语言时候需要用到的库为libc
我不使用编译器自带的而是从开发板上下载了该文件作为编译文件的链接库。
然后在编译的时候指定该文件作为链接目标。

yhw@yhw-virtual-machine:~/gxl$ scp laojia:/lib/libc.so.6 ./   # 从开发板(服务器)系统的/lib目录下找到libc.so.6下载到当前目录
yhw@yhw-virtual-machine:~/gxl$ arm-linux-gnueabihf-gcc main.c -o main ./libc.so.6 #指定刚刚下载的libc.so.6文件作为编译时候链接文件

然后将程序部署到开发板环境运行成功

debian@npi:~$ ./main #运行
Hello World!
debian@npi:

而后尝试用指令-L指定一个目录让编译器从其中查找链接库,这样不用一个一个的输入文件。

yhw@yhw-virtual-machine:~/gxl$ arm-linux-gnueabihf-gcc main.c -o main -L ./lib_dir/ #自行创建文件夹并将文件移入后再执行此步骤

编译通过,完美解决。


总结

使用编译器-l-L选项手动添加从目标系统下载的链接库从而解决gblc版本不匹配的问题。
后续将继续了解一下gblc-all-in-one工具的使用原理。

以下附上命令行图片:
关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)
关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)
关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)文章来源地址https://www.toymoban.com/news/detail-425061.html

到了这里,关于关于version `GLIBC_2.34‘ not found解决办法(非升级glibc库或Linux系统)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Error(25) 解决node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found (required by node)

    问题 tips: 建议不要轻易改这个,感觉有坑… 一般正常服务器也不会出现这个问题,我这里是由于局域网的虚拟机出现此问题;建议操作前存个快照。 解决 解决中文乱码问题 今日分享语句: 心若向阳,做什么都会是美好的。

    2024年02月11日
    浏览(38)
  • 【playwright】centos系统安装提示version `GLIBC_2.27‘ not found

    在centos执行playwright install时,报错 /home/PlaywrightAllure/venv/lib/python3.7/site-packages/playwright/driver/node: /lib64/libm.so.6: version `GLIBC_2.27\\\' not found (required by /home/PlaywrightAllure/venv/lib/python3.7/site-packages/playwright/driver/node) /home/PlaywrightAllure/venv/lib/python3.7/site-packages/playwright/driver/node: /lib64/libc.

    2023年04月26日
    浏览(30)
  • linux报/lib64/libc.so.6: version `GLIBC_2.28‘ not found

    本处理方法主要针对新创建的服务器centos7.9版本 前提准备  安装gcc 升级make 安装glibc-2.28 如果在编译的失败,则提示什么就下载什么 比如下面提示bison版本过旧,那么就升级bison  更新完缺失的软件之后再重新编译 编译完成后再安装 接下来还剩一个  同样的步骤,只是这次安

    2024年01月17日
    浏览(38)
  • (解决方案) node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28‘ not found (node required by node)

    您可能会遇到安装在 ubuntu 操作系统上的 NodeJS 问题, 当您运行  node -v 或 pm2 list  命令时出现错误:-   node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28\\\' not found (required by node) 。 我尝试了各种解决方案 堆栈溢出 ,最后一个解决方案对我有用,只需通过以下命令运行即可。

    2024年02月16日
    浏览(31)
  • Centos /lib64/libc.so.6: version `GLIBC_2.28‘ not found (required by

    本文向大家介绍Centos系统在启动一些服务的时候会碰到的/lib64/libc.so.6: version `GLIBC_2.28’ not found (required by…的问题的解决方法,根据提示可知碰到此问题,是因为没有找到GLIBC_2.28版本,需要添加GLIBC的2.28版本 运行该命令后会报下面两个错误 先执行 之后再执行 会遇到报错2

    2024年02月12日
    浏览(39)
  • docker: /lib64/libc.so.6: version `GLIBC_2.32‘ not found (required by docker)

    Linux环境 Ubuntu 22.04 docker 最新版 jenkins docker 版本(以下版本都会报错 改为 jenkins/jenkins:jdk11 可能是因为报错的底层镜像用的都是centos,与ubuntu22.04不兼容, ubuntu22.04应该使用 jenkins/jenkins:jdk11 ,他的From镜像是 eclipse-temurin:“${JAVA_VERSION}”-jdk-focal , 然后在上级的From镜像应该是 ubuntu:

    2024年02月08日
    浏览(37)
  • /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32‘ not found

    1.检查版本 strings /lib/x86_64-linux-gnu/libc.so.6 | grep GLIBC 解决办法 添加一个高级版本系统的源,直接升级libc6 1.打开源文件: sudo nano /etc/apt/sources.list 2.添加内容: deb http://th.archive.ubuntu.com/ubuntu jammy main 3.升级 sudo apt-get update sudo apt-get install libc6 如有疑问,请看原文链接:原文链接

    2024年04月13日
    浏览(29)
  • Registered ARM Compiler Version not found in path:‘ARMCLANG’! Keil MDK5.9不安装Compiler Version5解决办法

    1. 原因 最近在学习STM32编程的时候,遇到了安装Keil_v5 MDK5.39版本的时候,不能编译程序,遇到了无法找到编译器的问题,Waring: Registered ARM Compiler Version not found in path:‘ARMCLANG’! ,这是由于ARM官网针对MDK5.7以后的版本不在预安装不预安装Compiler Version5 在网上找了得多解决方法

    2024年02月15日
    浏览(31)
  • 【ubuntu21.04问题】关于404 Not Found [IP: 185.125.190.39 80]的解决办法

    卸载不维护的ubuntu21.04,重装 ubuntu  LTS 版本(如20.04.4),再换相应源,即可解决。 做项目时文档要求ubuntu21.04版本,按照文档要求换了相应的ubuntu版本,换源也按照要求来,但是每次 apt-get update 的时候,还是失败,提示404 Not Found [IP: 185.125.190.39 80]。 ubuntu21.04版本是中间过渡

    2024年02月13日
    浏览(24)
  • linux系统上nodejs 报错:node: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.27‘ not found

    原因:因为当前系统不支持GLIBC_2.27,而且node的版本过高,但是后来降低了版本还是报这个错误,后来发现低版本的软链接在/usr/bin,而高版本的软链接在/usr/local/bin,一直使用了高版本所在的软链接 解决方法:删除/usr/local/bin中node的软链接,然后再安装一个比较低版本的no

    2024年02月16日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包