/usr/bin/ld: cannot find -lgcc_s 问题解决小记

由于之前用wubi装的ubuntu并且只给了它10G的硬盘空间,随着学习的深入这种配备已经无法满足我的需求了。今天索性把ubuntu从windows上“卸载了”,划了20G -_-的空余空间准备安装ubuntu双系统。双系统的安装过程很顺利,但接下来Qtopia的编译就不是很顺利了。我根据前面编译Qtopia时做的记录文档对源文件还有系统变量进行了若干修改,但是实际编译的过程却跳出了我之前没有遇到的问题。

/usr/bin/ld: cannot find -lgcc_s


终端不断跳出这个错误提示。意思是系统找不到需要链接的库文件。(该库文件为libgcc_s.so)

gcc编译器我用的是3.4.6的版本。一开始我以为系统找不到3.4版本对应的库文件,故打开/etc/ld.so.conf.d目录,添加i486-linux-gnu.conf文件,编辑如下:

# Multiarch support
/usr/lib/gcc/i486-linux-gnu/3.4.6/

#添加库文件寻找路径


终端下输入指令:ldconfig 以更新缓存。
但是再次编译Qtopia发现还是一样的问题。断定不是库文件目录缺失的问题。于是我自己到/usr/lib/gcc/i486-linux-gnu/3.4.6/文件夹下查找libgcc_s.so文件。libgcc_s.so是一个链接文件,链接到对应目录的libgcc_s.so.1文件。打开libgcc_s.so弹出提示链接已损坏。于是一切豁然开朗:文件未能链接到正常的库文件。接下来在终端下输入:

locate libgcc_s.so.1


以寻找库文件实际路径(注:我电脑里面同时有4.5版的编译器,该版链接的也是这一个库文件)

弹出:

/lib/i386-linux-gnu/libgcc_s.so.1


于是重定向3.4版编译的的libgcc_s.so链接

ln -sf /lib/i386-linux-gnu/libgcc_s.so.1/usr/lib/gcc/i486-linux-gnu/3.4.6/libgcc_s.so


为了验证是否能正确链接到,我在桌面上新建了hello.c文件并vim之

1 #include <stdio.h>
2 int main(int agrc, char**argv)
3 {
4   printf("Hello World!");
5   return0;
6 }


编译:gcc -o hello hello.c

无错误提示。          

运行:./hello

得到我们熟悉的“Hello World!”,呼,问题终于解决了!!!

马上切换到qtopia目录下编译,过程很顺利,历经半个小时,终于再次见到我们熟悉的Qtopia画面,欣慰!!^_^


(由于无聊,我查看了/usr/lib/gcc/i486-linux-gnu/3.4.6/目录下所有的链接文件,发现libstdc++.so这个链接也损坏了,重定向为:/usr/lib/i386-linux-gnu/libstdc++.so.6:ln -sf /usr/lib/i386-linux-gnu/libstdc++.so.6  /usr/lib/gcc/i486-linux-gnu/3.4.6/libstdc++.so)


                                                          By cassvin

                                                          2011-07-24    

posted @ 2011-07-24 15:05  cassvin  阅读(...)  评论(...编辑  收藏