Linux: /usr/bin/ld: cannot find -lc Error and Solution

         这个简单的问题折腾我近2个小时的时间,下载新gcc,libc,再编译Libc时一路曲折,居然说ld older。我郁闷的不行       

        其实早就想到是Libc.so的路径问题,但是自己当时把找到usr/lib/i386-linux-gnu/ libc.so 和 libc.a,复制 /usr/local/lib/目录中,发现还是不行,当时认为跟这个路径无关了,结果应该将这个拷贝到/usr/lib/目录中,主要是因为 /etc/ld.so.conf.d/libc.conf这个配置文件忽悠了我,让我误认为Libc的路径就是 /usr/local/lib/,结果就坑爹了~

     下面将介绍LIB的搜索机制~

     1./etc/ld.so.conf.d

     这个LIB搜索的配置文件,你发现这里面内容是include /etc/ld.so.conf.d/*.conf,因此如果需要添加PATH,可以在ld.so.conf.d/*.conf或者etc/ld.so.conf.d中任何一个配置文件中加入路径字符串,如i686-linux-gnu.conf中配置

/lib/i386-linux-gnu/usr

/lib/i386-linux-gnu

/lib/i686-linux-gnu

/usr/lib/i686-linux-gnu
/home/t~n/linux/fork

其中home/~linux/fork目录是自己添加的,在fork目录中编译一个.so库,再编译一个引用该库的main,经测试,可以搜索到Lib.

注意再修改这个配置文件后,需要执行ldconfig来重新配置系统的搜索路径!

 2.LD_LIBRARY_PATH 

  使用export LD_LIBRARY_PATH=path来指定搜索LIB,这种方式也是可以实现。

3.在编译时就指定LIB的搜索路径



1.编译目标代码时指定的动态库搜索路径; 
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径; 
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径; 
4.默认的动态库搜索路径/lib; 
5.默认的动态库搜索路径/usr/lib。 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值