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

  • 相关阅读:
    oracle基本语句
    SVM入门(六)线性分类器的求解——问题的转化,直观角度
    深入浅出KMeans算法
    SVM入门(三)线性分类器Part 2
    SVM入门(一)SVM的八股简介
    Hadoop源代码分析(五)
    用HTML5 Audio API开发游戏音乐
    Hadoop源代码分析(六)
    SVM入门(四)线性分类器的求解——问题的描述Part1
    SVM入门(二)线性分类器Part 1
  • 原文地址:https://www.cnblogs.com/xiaohexiansheng/p/5500870.html
Copyright © 2020-2023  润新知