arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: c

lr2131 2015-03-17 06:48:29
arm-linux-gnueabihf-gcc -o hello hello.c

arm-linux-gnueabihf-gcc: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory

在ubuntu14.10 64位的系统上做的,代码没有问题,用gcc编译是可以的,用交叉编译器编译就不行了,环境变量在/etc/profile
文件尾加了export PATH=/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/bin:$PATH

没有问题,在交叉编译器路径下找到了:
/opt/gcc-linaro-arm-linux-gnueabihf-4.9-2014.09_linux/arm-linux-gnueabihf/lib/libstdc++.so.6.0.20

但是编译时就是老报错,实在不明白是怎么搞的。
...全文
8136 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengdap 2017-11-03
  • 打赏
  • 举报
回复
多谢9楼,问题解决
若云流风 2017-09-22
  • 打赏
  • 举报
回复
手动点赞9楼
mm1994uestc 2017-09-08
  • 打赏
  • 举报
回复
感谢这位楼上的兄弟。
peng08303 2017-07-07
  • 打赏
  • 举报
回复
按9楼的做,问题解决。
诸家炜 2017-01-04
  • 打赏
  • 举报
回复
楼上的是对的
daainini 2016-09-27
  • 打赏
  • 举报
回复
debian64位下:、 apt-get install lib32z1 lib32ncurses5 apt-get install lib32stdc++6
lr2131 2015-03-18
  • 打赏
  • 举报
回复
引用 1 楼 lee244868149 的回复:
这个问题是因为交叉编译工具的 glibc库的版本和目标机器上的glibc库的版本不一致造成的 1. 在32为系统上编译 2.直接从目标机器里把 libc.so.6 和 librt.so.1 这两个库 复制到 交叉编译机器, 覆盖源文件, 然后再重新编译 3.静态链接 glibc库,执行下面的命令重新生成Mkaefile文件。 ./configure --sysroot=/home/arm_linux/arm-linux-gnueabihf/libc --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=/home/arm_linux/bin/arm-linux-gnueabihf- --extra-libs=/home/arm_linux/arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/libc.a 参考你的系统改变路径
32位在这里不是问题,从目标机拷贝库这种做法虽然可行,但我个人觉得不好,编译器环境是一整套的东西,你用编译环境下的库区覆盖目标板上的库,我倒是觉得没什么,当然这样做不解决我现在这个问题。但反过来,出问题的可能性很大。 我已经说过了,在编译环境下是找得到这个lib库的,并不是没有。 你说的第三步是要干什么,我没看懂,是要把交叉编译器的一些东西安装吗?但是我下的编译器不是安装版的,我之前也总是这样,直接用解压缩版的。所以你说的方法,我还不能确定是不是对的,昨晚这问题解决了,装了很多的软件,我也不知道是怎么解决的,现在也没法验证你的方法。 结贴
lr2131 2015-03-18
  • 打赏
  • 举报
回复
引用 2 楼 zhxianbin 的回复:
https://www.linaro.org/downloads/
我就是在这里下的编译器,版本没有问题,之前的有个环境用这个编译程序,放到板子上是可以运行的,只是现在再搭环境,却不行。
引用 4 楼 zhxianbin 的回复:
系统有什么不同吗,64位 和 32 位吗
已经安装了32位的那个兼容包了,不装的话,连arm-linux-gnueabihf-gcc都说找不到。装完后,就不报找不到arm-linux-gnueabihf-gcc的错了,但却报找不到标准库的错。 另外,这个问题我昨天已经解决了,具体的原因我找不到了,我后来装了很多的软件,就没再报错了。 结贴
zhxianbin 2015-03-17
  • 打赏
  • 举报
回复
系统有什么不同吗,64位 和 32 位吗
zhxianbin 2015-03-17
  • 打赏
  • 举报
回复
系统有什么不同吗,64位 和 32 位吗
zhxianbin 2015-03-17
  • 打赏
  • 举报
回复
系统有什么不同吗,64位 和 32 位吗
lr2131 2015-03-17
  • 打赏
  • 举报
回复
引用 2 楼 zhxianbin 的回复:
https://www.linaro.org/downloads/
我就是在这里下的编译器,版本没有问题,之前的有个环境用这个编译程序,放到板子上是可以运行的,只是现在再搭环境,却不行。
zhxianbin 2015-03-17
  • 打赏
  • 举报
回复
奔跑的路 2015-03-17
  • 打赏
  • 举报
回复
这个问题是因为交叉编译工具的 glibc库的版本和目标机器上的glibc库的版本不一致造成的 1. 在32为系统上编译 2.直接从目标机器里把 libc.so.6 和 librt.so.1 这两个库 复制到 交叉编译机器, 覆盖源文件, 然后再重新编译 3.静态链接 glibc库,执行下面的命令重新生成Mkaefile文件。 ./configure --sysroot=/home/arm_linux/arm-linux-gnueabihf/libc --enable-cross-compile --arch=arm --target-os=linux --cross-prefix=/home/arm_linux/bin/arm-linux-gnueabihf- --extra-libs=/home/arm_linux/arm-linux-gnueabihf/libc/usr/lib/arm-linux-gnueabihf/libc.a 参考你的系统改变路径

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧