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安装静态库。

  • 相关阅读:
    用vbox搭建Linux服务器
    mysql数据库两表关联查询统计同一字段不同值的个数
    2019-06-16 Java学习日记之XML&tomcat
    2019-06-15 Java学习日记之mysql多表查询
    2019-06-14 Java学习日记之SQL
    2019-06-13 Java学习日记之MySql
    XML & Tomcat
    数据库的CRUD操作
    PrepareStatement
    Dao模式(data Access Object 数据访问对象)
  • 原文地址:https://www.cnblogs.com/xiaohexiansheng/p/5500870.html
Copyright © 2011-2022 走看看