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

问题来源

源代码

#include "stdio.h"

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

使用armlinuxgnueabihfgcc交叉编译

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 得到的解决办法归纳为一下几点

这是一个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-allinone工具使用原理。

以下附上命令行图片
无
在这里插入图片描述
在这里插入图片描述

原文地址:https://blog.csdn.net/YuHWEI/article/details/128736804

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_46438.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注