【问题标题】:Linux g++ compiling error: /usr/bin/ld: cannot find -l/usr/local/includeLinux g++ 编译错误:/usr/bin/ld: 找不到 -l/usr/local/include
【发布时间】:2014-10-19 07:57:07
【问题描述】:

我正在从事一个涉及protobufzmq 的项目。我已经在VS2010上完成了,现在想让它在Linux下工作。我刚刚在我们的 Linux 服务器上安装了protobufzmqMakefile 看起来像这样:

g++ -c  -D_DEBUG TestTDFAPI_v2.cpp -I ../
g++ -c  -D_DEBUG Platform.cpp
g++ -c  -D_DEBUG PathHelper.cpp                                                                                                    
g++ -c  -D_DEBUG MyStruct.pb.cpp            
g++ -c  -D_DEBUG MyStruct.cpp
g++ -o Test_TDFAPI_v2 Platform.o PathHelper.o MyStruct.pb.o MyStruct.o TestTDFAPI_v2.o -l /usr/local/include -L /usr/local/lib -L../ -L../linux/ -lTDFAPI_v2 -lWHNetWork -lpthread -lprotobuf

make后出现如下错误:

/usr/bin/ld: cannot find -l/usr/local/include
collect2: ld returned 1 exit status

有人知道吗?

【问题讨论】:

  • 使用-I 而不是-l。后者表示要链接的库,而不是包含路径。
  • 顺便说一句,您的 Makefile 看起来非常糟糕。见this example。你想用g++ -Wall -g编译。
  • 啊,难怪。谢谢!
  • @BasileStarynkevitch 这不是我写的……我正在使用其他人的 API,这是他们的一个 Makefile……
  • 如果他们的Makefile 这么差,你还是应该改进一下。

标签: c++ linux g++ protocol-buffers zeromq


【解决方案1】:

-l(减号)用于库文件以搜索解析引用,您希望-I(减号)指定包含目录。

【讨论】:

  • 感谢您的回答。顺便说一句,-L /path/to/some/dir/-L/path/to/some/dir 有什么区别? -L 后面的空格的省略有什么不同吗?
  • 不,与-L 有或没有空格没有区别。
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 2023-01-07
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多