当前位置: 技术问答>linux和unix
设置了/etc/ld.so.conf,运行了ldconfig,编译仍找不到动态库
来源: 互联网 发布时间:2017-02-21
本文导语: 我的makefile文件如下: test:test.o gcc test.o -ldl -lsmbios -o test test.o:test.c gcc -c test.c -o test.o 动态库在/home/lib-jar/test中,我配置了/etc/ld.so.conf /etc/ld.so.conf内容如下: include ld.so.conf.d/*.conf /home/lib-jar/test 然后...
我的makefile文件如下:
test:test.o
gcc test.o -ldl -lsmbios -o test
test.o:test.c
gcc -c test.c -o test.o
动态库在/home/lib-jar/test中,我配置了/etc/ld.so.conf
/etc/ld.so.conf内容如下:
include ld.so.conf.d/*.conf
/home/lib-jar/test
然后执行了ldconfig命令,
执行ldconfig -p也能找到动态库
[root@zhaozhanzhong test]# ldconfig -p | grep smbios
libsmbios.so (libc6,x86-64) => /home/lib-jar/test/libsmbios.so
可执行make,却出错,结果如下
[root@zhaozhanzhong test]# make
gcc -c test.c -o test.o
gcc test.o -ldl -lsmbios -o test
/usr/bin/ld: cannot find -lsmbios
collect2: ld returned 1 exit status
make: *** [test] Error 1
但是当我把libsmbios.so拷贝到/usr/lib目录下时就没问题
请问这是怎么回事
test:test.o
gcc test.o -ldl -lsmbios -o test
test.o:test.c
gcc -c test.c -o test.o
动态库在/home/lib-jar/test中,我配置了/etc/ld.so.conf
/etc/ld.so.conf内容如下:
include ld.so.conf.d/*.conf
/home/lib-jar/test
然后执行了ldconfig命令,
执行ldconfig -p也能找到动态库
[root@zhaozhanzhong test]# ldconfig -p | grep smbios
libsmbios.so (libc6,x86-64) => /home/lib-jar/test/libsmbios.so
可执行make,却出错,结果如下
[root@zhaozhanzhong test]# make
gcc -c test.c -o test.o
gcc test.o -ldl -lsmbios -o test
/usr/bin/ld: cannot find -lsmbios
collect2: ld returned 1 exit status
make: *** [test] Error 1
但是当我把libsmbios.so拷贝到/usr/lib目录下时就没问题
请问这是怎么回事
|
你理解错了,ld.so是动态库载入器而不是连接器,某些翻译“动态连接器”有问题的,或者说英文原文就有问题
换句话说,配置ld.so.conf的作用就是如果so在非标准路径,可执行文件能够找到,这是运行期做的事情
你现在是编译,ld.so根本不起作用,所有用非标准路径的话必需手动指定库目录
换句话说,配置ld.so.conf的作用就是如果so在非标准路径,可执行文件能够找到,这是运行期做的事情
你现在是编译,ld.so根本不起作用,所有用非标准路径的话必需手动指定库目录