• /usr/bin/ld: cannot find -lgcc_s 问题解决小记



    /usr/bin/ld: cannot find -lgcc_s 问题解决小记

    博客分类:
    Linux/Ubuntu

    由于之前用wubi装的ubuntu并且只给了它10G的硬盘空间,随着学习的深入这种 配备已经无法满足我的需求了。今天索性把ubuntu从windows上“卸载了”,划了20G -_-的空余空间准备安装ubuntu双系统。双系统的安装过程很顺利,但接下来Qtopia的编译就不是很顺利了。我根据前面编译Qtopia时做的记 录文档对源文件还有系统变量进行了若干修改,但是实际编译的过程却跳出了我之前没有遇到的问题。


    Linux代码 收藏代码

    /usr/bin/ld: cannot find -lgcc_s

    终端不断跳出这个错误提示。意思是系统找不到需要链接的库文件。(该库文件为libgcc_s.so)

    gcc编译器我用的是3.4.6的版本。一开始我以为系统找不到3.4版本对应的库文件,故打开/etc/ld.so.conf.d目录,添加i486-linux-gnu.conf文件,编辑如下:


    Linux代码 收藏代码

    # Multiarch support
    /usr/lib/gcc/i486-linux-gnu/3.4.6/

    #添加库文件寻找路径

    终端下输入指令:ldconfig 以更新缓存。
    但是再次编译Qtopia发现 还是一样的问题。断定不是库文件目录缺失的问题。于是我自己到/usr/lib/gcc/i486-linux-gnu/3.4.6/文件夹下查找 libgcc_s.so文件。libgcc_s.so是一个链接文件,链接到对应目录的libgcc_s.so.1文件。打开libgcc_s.so弹出 提示链接已损坏。于是一切豁然开朗:文件未能链接到正常的库文件。接下来在终端下输入:


    Java代码 收藏代码

    locate libgcc_s.so.1

    以寻找库文件实际路径(注:我电脑里面同时有4.5版的编译器,该版链接的也是这一个库文件)

    弹出:


    Linux代码 收藏代码

    /lib/i386-linux-gnu/libgcc_s.so.1

    于是重定向3.4版编译的的libgcc_s.so链接


    Linux代码 收藏代码

    ln -sf /lib/i386-linux-gnu/libgcc_s.so.1 /usr/lib/gcc/i486-linux-gnu/3.4.6/libgcc_s.so

    为了验证是否能正确链接到,我在桌面上新建了hello.c文件并vim之


    C代码 收藏代码

    #include <stdio.h>

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

    编译:gcc -o hello hello.c

    无错误提示。          

    运行:./hello

    得到我们熟悉的“Hello World!”,呼,问题终于解决了!!!

    附:Linux文件链接命令

    例:$ ln - s lunch /home/xu
    用户为当前目录下的文件lunch创建了一个符号链接/home/xu。
    删除符号链接,有创建就有删除
    rm -rf symbolic_name 注意不是rm -rf symbolic_name/
    链接文件的查看命令:ls
    例如:ls -al或者ls -li

  • 相关阅读:
    记一则玄乎奇玄的ADG误删自救事件
    ORACLE 日常信息查询sql
    Linux脚本判断磁盘容量
    postgresql数据库创建触发器记录表修改时间
    centos7关闭防火墙
    centos7 安装mysql5.7(二进制tar包方式)
    Oracle11G RMAN-06214: Datafile Copy /u01/app/oracle/product/11.2.0/db_1/dbs/snapcf_cpbd.f
    SQLPlus中set命令
    oradehub命令
    记一报错解决:ORA-00845: MEMORY_TARGET not supported on this system
  • 原文地址:https://www.cnblogs.com/lvdongjie/p/7253113.html
Copyright © 2020-2023  润新知