我有一个让我头疼的问题,假设命令-L搜索Makefile的当前目录中的库,但它对我不起作用,例如我在Makefile中有以下命令:
...
LDLIBS = -L/libs -lmatrix
main: main.o operations.o display.o
$(CC) $(LDLIBS) $^ -o $@
...
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,字面上说:
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
Run Code Online (Sandbox Code Playgroud)
但是当我只是为"-L $(PWD)/ libs"更改"-L/libs"时,它编译得很完美,我的程序工作得很好......
但是使用"-L $(PWD)"我得到了另一个问题,如果任何目录的名称都有空格它不再起作用,实际上我不知道这个问题是否是不可修复的(使用$(PWD)或不使用),但我仍然怀疑为什么没有$(PWD)它不起作用,因为显然(在互联网上看到很多例子)使用-L,不应该需要$(PWD).
你错了,不需要它.该路径/libs表示libs文件系统根目录.就像/bin并不意味着" bin我当前目录下的目录",所以/libs并不意味着当前libs目录下的目录.
如果要查看libs当前目录,只需使用-Llibs或者如果您想要更具体,-L./libs(目录.是当前目录,因此cd .更改当前目录,就像cd ..更改父目录一样).
| 归档时间: |
|
| 查看次数: |
284 次 |
| 最近记录: |