• gcc static静态编译选项提示错误修正(/usr/lib/ld: cannot find -lc)


    用gcc静态编译C程序时显示出:
    /usr/lib/ld: cannot find -lc
    /usr/lib/ld: cannot find -lgcc_s
    /usr/lib/ld: cannot find -lm
    /usr/lib/ld: cannot find -lgcc_s

    的错误。主要问题出在静态编译时需要链接静态库,将动态库编译到文件中,去掉此参数是没问题。

    非静态编译时 ldd filename,显示如下,这是可执行程序所需要的动态库,运行可执行程序时需要如下动态库。

            linux-gate.so.1 =>  (0x009a3000)
            libpthread.so.0 => /lib/libpthread.so.0 (0x008fd000)
            libc.so.6 => /lib/libc.so.6 (0x0077f000)
            /lib/ld-linux.so.2 (0x0075d000)
            libtinfo.so.5 => /lib/libtinfo.so.5 (0x05c46000)
            libdl.so.2 => /lib/libdl.so.2 (0x008f6000)

    静态编译时需要将所有的.a库链接到可执行程序中,所以需要libc的静态库文件,使用此命令查看rpm -ql glibc-static提示没有库文件,到下面的地址

    http://www.rpmfind.net/linux/rpm2html/search.php?query=libc.a&submit=Search+...

    下载glibc-static文件,使用 rpm -iv filename.rpm安装即可,调用find / -name libc.a可以看到libc的静态库,或则利用yum install glibc-static安装。

         

    *******以下为非静态编译时出错的处理流程:

    解决/usr/lib/ld: cannot find -lc

    1. 在系统中搜索 libc.so 文件。搜索出一个无效的链接,删除;还有一个 libc.so.6,在/lib下面。

    2.建立链接: ln- sv /lib/libc.so.6 libc.so 或cp /lib/libc.so.6 /lib/libc.so

    解决/usr/lib/ld: cannot find -lm:
    1. 在系统中搜索 libm.so 文件。搜索出一个 libm.so,在/usr/lib/i386-linux-gnu下面。
    2. 进入usr/lib目录:cd /usr/lib
    3.建立链接:sudo ln -sv /usr/lib/i386-linux-gnu/libm.solibm.so


    解决/usr/lib/ld: cannot find -lgcc_s:
    1. 在系统中搜索 libgcc_s.so文件。同样在/usr/lib/i386-linux-gnu下面搜索到了libgcc_s.so.1。
    2. 进入usr/lib目录:cd /usr/lib
    3.建立链接:sudo ln -sv /lib/i386-linux-gnu/libgcc_s.so.1libgcc_s.so

    当某一个链接建立成功的时候,系统显示是类似这样的:
    "libgcc_s.so" ->"/lib/i386-linux-gnu/libgcc_s.so.1"

  • 相关阅读:
    tetrahedron (公式)
    Subway (树中心 + 树hash)
    包装类的Null值
    基本数据类型的范围边界
    基本数据类型的装箱和拆箱()优先使用基本数据类型
    第三章-python基础 笔记
    第二章-Python起步
    第一章-欢迎来到python世界
    第八章-连接与多张表的操作
    php错误和异常的处理方式
  • 原文地址:https://www.cnblogs.com/yanzi-meng/p/9045179.html
Copyright © 2020-2023  润新知