新手咨询一个编译的问题,望赐教
我今天早上自己写了一个很简单的程序编译了一个静态库,在使用这个库的时候报下面的错误:
rm -f *.lis *.o
cc -c proc1.c -I/home/linux/def -g -DDEBUG
cc -o proc -I/home/linux/def -l/home/linux/lib/libpub.a proc1.o
/usr/bin/ld: cannot find -l/home/linux/lib/libpub.a
collect2: ld returned 1 exit status
make: *** [proc] Error 1
但是我这个文件是存在的:
H851/home/linux/lib>ls
libpub.a
实在搞不明白怎么回事情了,请大家指点啊
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
在不行就直接把libpub.a放到/usr/lib下面
然后gcc -xxxxx -lpub
-l参数是这样的:linux下的库文件的命名规范是libMYLIB.a,或者libMYLIB.so,只有以这样命名的库文件才能用-l参数指定,指定的格式为-lMYLIB,而不是-llibMYLIB.so。
好,我晚上回去试试看,不过我昨天也指定过,-L/home/linux/lib -llibpub.a 但是这样也说找不到,我晚上再试试,多谢你啊,要是不行再麻烦你帮我看看,多谢多谢:)
cc -o proc -I/home/linux/def -l/home/linux/lib/libpub.a proc1.o
改为cc -o proc -I/home/linux/def /home/linux/lib/libpub.a proc1.o
-l不需要,只是将两个模块静态编译在一起,就像cc-o proc1.o proc2.o......
如果用-l,那么应该这样: -lpub而不是-llibpub.a , 并且用-L参事指定编译器要查找lib文件的目录,若不指定则查找系统目录/lib , /usr/lib