zoukankan      html  css  js  c++  java
  • <redhat企业版6>交叉编译hello.c时遇到的问题及解决历程

    交叉编译hello.c遇到的问题及解决历程

      交叉编译链hello.c:

        arm-linux-gcc -static hello.c -o hello.

      执行语句后出现错误:缺少共享库libstdc++.so.6(如图)

    d

      这种问题之前遇到过,就是安装缺少的so包文件,于是上网查找到应该安装的包。由于上次安装glibc时给系统换了源,所以只要执行下面命令即可: yum install libstdc++.i686

    成功安装后再次编译hello.c,发现还是出现上述错误。之后我在/usr/lib64文件夹下找到了libstdc++.so.6的库文件(如图)

      既库文件在这里,而编译时就是找不着这个库。于是我的思路是:给它指定动态库路径,按照网友帖子一顿操作,再次尝试编译hello.c,发现还是不行(哎!)这下回到起点了。

    我的分析可能出错的地方:①找到的libstdc++.so.6文件不是需要的共享库文件,因为该文件为浅蓝色——链接文件.②.我指定动态库路径有问题,并没有能够链接到需要的共享库。

    (我暂时还不能解释这是什么原因,写下随笔一是记录学习,二是希望网友能给点意见

      但是我还是解决了该问题,尽管我自己不知道怎么就解决了!!嘻嘻

      接下来我再次尝试安装了该so库文件包,不过这次是在网上下载的rpm包:libstdc++-4.4.7-18.el6.i686.rpm以及安装依赖的另一个RPM包libgcc-4.4.7-18.el6.i686.rpm(点击即可转到下载页面).两个包要一起安装,安装命令:

            rpm -ivh libstdc++-4.4.7-18.el6.i686.rpm libgcc-4.4.7-18.el6.i686.rpm

      再再次编译,奇迹出现了,出现错误,缺少libz.so.1库(如图)。

      虽然还是出错,但好歹上一个错误没再出现,当然还是安装相关文件包,执行命令:

                           yum install zlib.i686 

      安装成功后,再再再次编译,终于没有错误,获得可执行文件 hello。

      

     

      之后通过串口hello文件传输到开发板上,把文件属性改为可执行 chmod +x hello ,成功在mini2440运行该程序。

    最后附上我查看的一篇博客地址,这篇文章介绍了各种xx.s0.xx缺少时需要安装的文件包(非常感谢!!)。

  • 相关阅读:
    [apue] FIFO:不是文件的文件
    [apue] 等待子进程的那些事儿
    [apue] popen/pclose 疑点解惑
    [apue] 使用 popen/pclose 的一点疑问
    [apue] 使用 poll 检测管道断开
    [apue] dup2的正确打开方式
    [apue] 管道原子写入量的一个疑问
    [apue] 测试管道容量的一些疑问
    【新阁教育】再也不用担心我的PLC通信不上了
    【新阁教育】三菱PLC的这个功能,真的很强大
  • 原文地址:https://www.cnblogs.com/jason-notbook/p/9016519.html
Copyright © 2011-2022 走看看