加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – Makefile链接器错误

发布时间:2020-12-16 09:51:35 所属栏目:百科 来源:网络整理
导读:我有一个让我头疼的问题,假设命令-L搜索Makefile的当前目录中的库,但它对我不起作用,例如我在Makefile中有以下命令: ...LDLIBS = -L/libs -lmatrixmain: main.o operations.o display.o $(CC) $(LDLIBS) $^ -o $@... 当我尝试编译它时,字面上说: gcc -L/li
我有一个让我头疼的问题,假设命令-L搜索Makefile的当前目录中的库,但它对我不起作用,例如我在Makefile中有以下命令:

...
LDLIBS  = -L/libs -lmatrix

main: main.o operations.o display.o
    $(CC) $(LDLIBS) $^ -o $@
...

当我尝试编译它时,字面上说:

gcc  -L/libs -lmatrix main.o operations.o display.o -o main
/usr/bin/ld: cannot find -lmatrix
collect2: ld returned 1 exit status
make: *** [main] Error 1

但是,当我只是为“-L $(PWD)/ libs”更改“-L / libs”时,它编译得很完美,我的程序运行正常……

但是使用“-L $(PWD)”我得到了另一个问题,如果任何目录的名称都有空格它不再起作用,实际上我不知道这个问题是不可修复的(使用$(PWD)或不使用),但我仍然怀疑为什么没有$(PWD)它不起作用,因为显然(在互联网上看到很多例子)使用-L,不应该需要$(PWD).

解决方法

你错了,不需要它. path / libs表示文件系统根目录下的libs目录.就像/ bin并不意味着“我当前目录下的bin目录”,所以/ libs并不意味着当前目录下的libs目录.

如果你想查看当前目录中的libs,只需使用-Llibs,或者如果你想要更具体,-L./ libs(目录.是当前目录,所以cd.改变到当前目录,就像cd ..更改父目录).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读