c++ -/usr/bin/ld : cannot find -l-L/usr/lib

标签 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 ?

最佳答案

makefile 正在生成一个链接命令,内容如下:

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

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

因此,这被解释为链接到名称为“-L/usr/lib”的共享库的指令,这当然是完全伪造的。

不幸的是,没有可以按下的通用魔法按钮,请修复此错误。有必要调查此包的配置和/或构建过程中出现的问题并修复它。

关于c++ -/usr/bin/ld : cannot find -l-L/usr/lib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39349458/

相关文章:

java - Java 程序应该听什么,才能成为一个好的 Linux 服务?

c++ - 使用 stdargs 对已定义函数的 undefined reference

c++ - 如何使用 std::bind 编译 C++ 程序?

c++ - 由于比较器,Visual C++ 抛出映射异常

c++ - CMake target_link_libraries 不保留顺序

c++ - 尝试在C++中为chrono创建函数时没有构造函数实例

c++ - 当调用刚体树中的函数(如 doKinematics、CreateKinematicCache)时,如何修复 cpp 中的 "undefined reference to"错误

c++ - x86下划线前缀问题 : Calling NASM function from C++ function works in x64 but fails in x86

c++ - vmware中的线程编程, 'process scheduling'没有发生

ruby - 这是不是root登录的问题?