zoukankan      html  css  js  c++  java
  • gcc static静态编译选项提示错误:/usr/lib/ld:cannot find -lc

    在学习gcc静态库动态库编译的时候选用静态库编译时出错显示:/usr/lib/ld:cannot find -lc

    百度:/usr/lib/ld:cannot find -lc多处给的解决方案为:

    然而并不能解决问题,最终定位发现是静态编译的问题。而且不止会出现这种情况:

    /usr/lib/ld:cannot find -lc

    /usr/lib/ld:cannot find -lgcc_s

    /usr/lib/ld:cannot find -lm

    等的错误,主要原因在静态编译时需要链接静调库。如上命令:

    [xiaohexiansheng@centos6 app]$ gcc -static -I./libs main.c -o app -L./libs -lcrypto -lfunc

    如果在编译时去掉-static选项选用动态库编译则不会出现此种情况

    [xiaohexiansheng@centos6 app]$ gcc -I./libs main.c -o app -L./libs -lcrypto -lfunc
    [xiaohexiansheng@centos6 app]$ ls
    app  libs  main.c

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

    [xiaohexiansheng@centos6 app]$ ldd app
            linux-gate.so.1 =>  (0x004ad000)
            libcrypto.so => /usr/lib/libcrypto.so (0x03ad9000)
            libfunc.so => not found
            libc.so.6 => /lib/libc.so.6 (0x0052a000)
            libdl.so.2 => /lib/libdl.so.2 (0x0070c000)
            libz.so.1 => /lib/libz.so.1 (0x00713000)
            /lib/ld-linux.so.2 (0x00508000)

    静态编译时需要将所有的.a库链接到可执行文件中,所以需要libc静态库文件,在系统找查找glibc-static提示没有库文件。

    #yum install glibc-static安装静态库。

  • 相关阅读:
    MySQL5.6配置文件详解
    Mysql5.7.13忘记密码及创建用户
    CentOS7.2.1511 安装Mysql-5.7.13
    DAY01
    DAY01
    DAY01
    开启Python自动化运维之路
    Java知识点-----------单例设计模式
    Java知识点-----------重写Object的equals方法
    Linux基础06——压缩、解压、安装命令
  • 原文地址:https://www.cnblogs.com/xiaohexiansheng/p/5500870.html
Copyright © 2011-2022 走看看