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

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

[[email protected] app]$ gcc -static -I./libs main.c -o app -L./libs -lcrypto -lfunc

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

[[email protected] app]$ gcc -I./libs main.c -o app -L./libs -lcrypto -lfunc
[[email protected] app]$ ls
app  libs  main.c

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

[[email protected] 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安装静态库。

时间: 2024-10-14 10:02:31

gcc static静态编译选项提示错误:/usr/lib/ld:cannot find -lc的相关文章

【转】G++ 处理 /usr/bin/ld: cannot find -lc

原文网址:http://blog.sina.com.cn/s/blog_67bbb71101010tto.html 用g++编译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的错误.在网上看了很多中关于/usr/lib/ld: cannot find -lXXX的解法,但是大同小异,没

编译报错: /usr/bin/ld: cannot find -lc

在编译的时候偶尔遇到错误/usr/bin/ld: cannot find -lc,如下: 查看是没有安装静态库glibc-static而导致的,安装在编译即可: 安装方法: yum install glibc-static -y 然后在编译就不报错了:

Android 编译错误/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../

编译时出现/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../libz.so when searching for -lz错误 ============================================ PLATFORM_VERSION_CODENAME=AOSP PLATFORM_VERSION=AOSP TARGET_PRODUCT=generic TARGET_BUIL

【解决】/usr/bin/ld: cannot find -lc

现象:运行gcc静态编译程序时报错: /usr/bin/ld: cannot find -lc collect2: ld returned 1 exit statusmake: *** [gcc_dry2] Error 1 (或者调用Makefile编译时报错) 原因:程序链接须要静态库,系统没有安装静态库导致报错 解决:安装静态库 #sudo  yum install glibc-static

编译报错 /usr/bin/ld: cannot find -lc 解决

今天在编译chkrootkit工具时报错,/usr/bin/ld: cannot find -lc,请教了不少人,在网上找了不少方法尝试终于解决了 先看问题: 这问题一般是由于ld在进行库连接时找不到相应的库文件导致的 解决方法: 出现问题时,先去lib目录下查找相关的库文件: [[email protected] ~]# cd  /usr/lib [[email protected] lib]# ll | grep libc.solrwxrwxrwx   1 root root       1

chkrootkit 编译报错的解决/usr/bin/ld: cannot find -lc

1:Centos6.5安装chkrootkit wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz tar xvf chkrootkit.tar.gz cd chkrootkit-0.51/ make sense报错如下: /usr/bin/ld: cannot find -lc collect2: ld returned 1 exit status make: *** [strings-static] Error 1 2:解决

gcc编译生成静态及动态链接库步骤

这两天在看<Linux C程序设计大全>,吴岳编著,清华大学出版社.这本书是在一个培训机构看到的,在网上查了下该书的相关信息.从目录而言,该书涵盖了Linux下C程序设计的较多内容,包括C语言基础(主要讲解C语法结构).C语言开发环境(主要介绍VIM使用.GCC使用.makefile编写.gdb使用).Linux进程操作.Linux文件操作.Linux网络编程这几部分.阅读了该书几个小章节,总体而言,书的部分内容较充实,但是存在较多编辑错误,部分样例实际运行时与书中内容不符. 这里使用该书P1

Linux系统中提示/usr/bin/ld: cannot find -lxxx错误的通用解决方法

在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息: 代码如下: /usr/bin/ld: cannot find -lxxx 这些讯息会随着编译不同类型的source code 而有不同的结果出来如: 代码如下: /usr/bin/ld: cannot find -lc/usr/bin/ld: cannot find -lltdl/usr/bin/ld: cannot find -lXtst 其中xxx即表示函式库文件名称,如上例的:libc.so.libl

gcc -static hello.c 背后究竟发生了什么

大家可能经常使用gcc -static ***.c,那么这个静态链接究竟使用了什么命令,又链接了哪些库呢? 我们首先来分析libc.a是个什么文件.我们已经知道了xxx.so是动态链接库,xxx.o是静态链接库或者说可重定位文件,/bin/bash为可执行文件. libc.a其实是很多可重定位文件的集合,而且每个可重定位文件中一般都只写一个函数.例如printf.o只有printf一个函数,目的是为了在静态链接时少链接一些没用的库. 首先使用命令locate libc.a,我们会找到libc.a