天天看点

/usr/bin/ld: /usr/bin/ld: cannot find -lc

问题描述: 在专题1的交叉工具链讲解部分,使用静态链接方式编译 gcc -static hello.c -o hello, 提示 /usr/bin/ld: /usr/bin/ld: cannot find -lc。 

问题原因: 搜索了之后基本确定是因为 /usr/bin/中缺少libc.a 这个文件。 它是编译器静态编译过程中要用的库文件。

处理办法:利用QQ群里共享的文件glibc-static-2.12-1.80.el6.i686.rpm(我的Linux是Red Hat 企业版6.3)。 

 1. rpm -ivh /home/glibc-static-2.12-1.80.el6.i686.rpm

 2. yum list | grep static 查看

 3. yum install glibc.static 

现在去/usr/bin下面应该就能看得到 libc.a文件了,再次编译也成功了。

补充: 1.对于有经验的人来说这样的问题不算问题,但对于新手来说,每个命令和操作方法都不太熟练,可能会花更长的时间。 希望能有一点帮助。

          2.部分帖子中提到libc.so、glibc.i686等,那可能是默认默认的动态编译方式。注意区分具体问题原因。

附上两个下载glibc-static的链接:

https://pkgs.org/download/glibc-static

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

本人纯菜鸟,写下来也是作为自己的笔记。