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)