g++ 在 /usr/local/lib 中找不到库

Posted

技术标签:

【中文标题】g++ 在 /usr/local/lib 中找不到库【英文标题】:g++ not finding library in /usr/local/lib 【发布时间】:2016-07-03 04:06:05 【问题描述】:

我正在尝试让 g++ 自行查找 glog (OS X 10.11.5)。我安装了 glog(尝试了来自 github pull 的 cmake 和 brew install - 在两种情况下的结果相同)。然后我尝试编译这个文件:

#include <glog/logging.h>

int main(int argc, char** argv) 
  int* x = nullptr;
  CHECK_NOTNULL(x);
  return 0;

通过运行g++ -lglog -I/usr/local/include test.cpp

这会失败并出现以下错误:

ld: library not found for -lglog
clang: error: linker command failed with exit code 1 (use -v to see invocation)

但是,当我使用 g++ -L/usr/local/lib -lglog -I/usr/local/include test.cpp 编译时,它工作正常。

我尝试将 /usr/local/lib 添加到我的 LD_LIBRARY_PATH 中,但无济于事。

通常,我不介意,但我正在使用 CMake(它发现 glog 很好),我不想在其中“硬编码”库路径以便它是可移植的。我之前在另一台 Mac 上尝试过,效果很好,所以我不确定发生了什么。有关解决此问题的任何建议?

【问题讨论】:

【参考方案1】:

找到一个潜在的解决方案:

export LIBRARY_PATH=/usr/local/lib

不确定这是否是 最好的 解决方案,但目前可以使用。我可以把它本地放在我的 .bashrc 中。

更新:在 macOS 上,如果您运行 xcode-select --install,它应该可以解决这些问题。

【讨论】:

以上是关于g++ 在 /usr/local/lib 中找不到库的主要内容,如果未能解决你的问题,请参考以下文章

无法编译第一个 opencv 程序,'/usr/bin/ld: 找不到 -lcv'

带有 -L/usr/local/lib 的巨大可执行文件大小

Ec2 sudo 运行 npm或node时,出现找不到命令

介子找不到静态库

npm ERR! Error: EACCES: permission denied, access ‘/usr/local/lib/node_modules‘

安装后找不到异步