我在 Mac OS X 中有一个 makefile,最终编译的最后一个命令行是:
gcc count_words.o lexer.o -lfl -o count_words
但它回应:
ld: library not found for -lfl
collect2: ld returned 1 exit status
我发现库 libfl.a 在 /opt/local/lib/ 中,并且将命令行修改为:
gcc count_words.o lexer.o -L/opt/local/lib/ -lfl -o count_words
它工作得很好,但是我已经读过,当看到 -l 形式的先决条件时,GNU make 搜索形式为 libNAME.so 的文件;如果未找到匹配项,则搜索 libNAME.a。这里 make 应该找到 /opt/local/lib/libfl.a 并继续最后的操作,链接,但这没有发生。
我尝试使用 LD_LIBRARY_PATH,然后意识到当我在 Mac 上工作时,我必须使用 DYLD_LIBRARY_PATH,我导出了指向 /opt/local/lib 的变量并尝试再次运行 makefile,但没有成功。发现另一个名为 DYLD_FALLBACK_LIBRARY_PATH 的环境变量,已导出,但不起作用。
我应该怎么办?