新手咨询一个编译的问题,望赐教

发布于 2022-07-23 17:03:33 字数 427 浏览 8 评论 4

我今天早上自己写了一个很简单的程序编译了一个静态库,在使用这个库的时候报下面的错误:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

巨坚强 2022-07-27 09:59:28

在不行就直接把libpub.a放到/usr/lib下面
然后gcc -xxxxx -lpub

情绪 2022-07-27 09:51:20

-l参数是这样的:linux下的库文件的命名规范是libMYLIB.a,或者libMYLIB.so,只有以这样命名的库文件才能用-l参数指定,指定的格式为-lMYLIB,而不是-llibMYLIB.so。

獨角戲 2022-07-25 12:23:20

好,我晚上回去试试看,不过我昨天也指定过,-L/home/linux/lib -llibpub.a 但是这样也说找不到,我晚上再试试,多谢你啊,要是不行再麻烦你帮我看看,多谢多谢:)

不如归去 2022-07-23 20:46:45

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文