/ usr / bin / ld:找不到-l -L / usr / lib

时间:2016-09-06 12:50:37

标签: c++ linux g++ libtool

我在ubuntu 16.04上尝试编译fbthrift(https://github.com/facebook/fbthrift)时遇到了一个奇怪的错误

make[4]: Entering directory '/home/abhishek/fblualib/fbthrift/thrift/compiler/py'
/bin/bash ../../libtool  --tag=CXX   --mode=link g++  -std=gnu++1y -module -avoid-version -no-undefined -l -L/usr/lib -lpython2.7 -lfolly -L/usr/local/lib -o frontend.la -rpath /usr/local/lib frontend_la-compiler.lo ../libparse.la ../libthriftcompilerbase.la -lssl -lcrypto -lrt -lpthread -lsasl2 -lmstch -lwangle -lsnappy -lgflags -lglog 
libtool: link: g++  -fPIC -DPIC -shared -nostdlib /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crti.o /usr/lib/gcc/x86_64-linux-gnu/5/crtbeginS.o  .libs/frontend_la-compiler.o  -Wl,--whole-archive ../.libs/libparse.a ../.libs/libthriftcompilerbase.a -Wl,--no-whole-archive  -l -L/usr/lib -lpython2.7 /usr/local/lib/libfolly.so -L/usr/local/lib -lssl -lcrypto -lrt -lpthread -lsasl2 -lmstch -lwangle -lsnappy -lgflags -lglog -L/usr/lib/gcc/x86_64-linux-gnu/5 -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/5/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/5/../../.. -lstdc++ -lm -lc -lgcc_s /usr/lib/gcc/x86_64-linux-gnu/5/crtendS.o /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/crtn.o    -Wl,-soname -Wl,frontend.so -o .libs/frontend.so
/usr/bin/ld: cannot find -l-L/usr/lib
collect2: error: ld returned 1 exit status
Makefile:500: recipe for target 'frontend.la' failed
make[4]: *** [frontend.la] Error 1
make[4]: Leaving directory '/home/abhishek/fblualib/fbthrift/thrift/compiler/py'
Makefile:882: recipe for target 'all-recursive' failed
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory '/home/abhishek/fblualib/fbthrift/thrift/compiler'
Makefile:591: recipe for target 'all' failed
make[2]: *** [all] Error 2
make[2]: Leaving directory '/home/abhishek/fblualib/fbthrift/thrift/compiler'
Makefile:498: recipe for target 'all-recursive' failed
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory '/home/abhishek/fblualib/fbthrift/thrift'
Makefile:430: recipe for target 'all' failed
make: *** [all] Error 2

为什么找不到/ usr / lib?

1 个答案:

答案 0 :(得分:3)

makefile正在生成一个读取命令的链接命令:

...  -l -L/usr/lib ...

makefile中的link命令可能在此处指定为-l$(SOMEVARIABLE),并且由于某种原因未设置变量,因此它将作为空字符串扩展。

因此,这被解释为与一个名为“-L / usr / lib”的共享库链接的指令,当然这完全是假的。

不幸的是,没有可以推送的通用魔术按钮,并修复此错误。有必要调查在此程序包的配置和/或构建过程中发生的问题并进行修复。