上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

实现Arm-Linux交叉编译遇到的问题总结

guduadmin211月前

引言:

项目中我们要实现网络半实物节点的仿真,开发板中为ARM-Linux,我们通过交叉编译实现上板过程出现了几处棘手问题,后续对几处问题进行了解决,在这里进行总结,其中针对此问题:/lib64/libstdc++.so.6: version `GLIBCXX_3.4.22' not found     32位的ARM所缺少文件libstdc++.so.6.28 网上很难找,我们这里便利大家,给予下载链接。

https://pan.baidu.com/s/10BpGHaI6-R75bSjeCWf8Ew

提取码:gwfo

问题:

  • No such file or directory/Segmentation fault
  • Version  'GLIBCXX_3.4.22' not found

    Segmentation fault:

    实现Arm-Linux交叉编译遇到的问题总结,第1张

    我们最开始进行Arm-Linux交叉编译时,对开发板中的ARM Linux版本不太清楚,错误的选择交叉编译器ARM-Linux-gcc 进行交叉编译,最开始编译的可执行文件格式为图中的32-bit LSB executable 格式当我们执行时会报错:

    No such file or directory

    最开始我们以为是编译的可执行文件格式不对,因为之前的vitis编译的Hello world 可以运行的程序的可执行文件格式为32-bit LSB shared object 因此当我们利用ARM-Linux-gcc编译器编译可执行文件格式为32-bit LSB shared object后报错:

    Segmentation fault

    最后经过多方面的学习,发现可以运行的程序的加载器格式为

    ld-linux-armhf.so.3

    是我们选择的交叉编译器的选择错误:

    arm-linux-gcc 编译出的加载器为:

    ld-linux.so.3

    arm-linux-gnueabihf-gcc 编译出的加载器为:

    ld-linux-armhf.so.3

    因此我们重新安装了arm-linux-gnueabihf-gcc编译器后,测试程序Hello World程序可以正常执行。

    Version  'GLIBCXX_3.4.22' not found:

    实现Arm-Linux交叉编译遇到的问题总结,第2张

    后续我们对我们的代码利用arm-linux-gnueabihf-gcc进行交叉编译放到开发板上执行时有一次出现了新的问题:

    Version  'GLIBCXX_3.4.22' not found

    针对这个问题网上有两种解决办法:

    https://www.cnblogs.com/xxd-qyr/p/11014491.html

    这里,这位博主针对两种问题有了明确的讲解和解决办法

    1. 原因1:已经安装过高版本但未软连接
    2. 原因2:版本低

    我们在这里主要是版本低,我们的gcc版本中没有包含我们需要的GLIBCXX_3.4.22

    实现Arm-Linux交叉编译遇到的问题总结,第3张

    我们需要的这个版本通过更新指令没有得到解决,只有去网上寻找对应的libstdc++.so.版本,在这里我们最开始找到了一个包含GLIBCCXX_3.4.22 的一个版本libstdc++.so.6.0.13 但是确实64位的,这里给出这位大方博主的链接,如果有64位问题的朋友,问题可以得到解决。

    https://blog.csdn.net/weixin_43227196/article/details/110946066

    我们最终经过千辛万苦找到了libstdc++.so.6.28 这个版本对32位兼容,含有3.4.22版本。

    实现Arm-Linux交叉编译遇到的问题总结,第4张

     问题得到解决,代码在开发板上顺利执行。

    实现Arm-Linux交叉编译遇到的问题总结,第5张

网友评论

搜索
最新文章
热门文章
热门标签
 
 梦见被僵尸追是什么预兆  鬼最怕什么脏话  梦见朋友怀孕生孩子