3

这里报告了这个问题的几种变体,据我了解响应,它归结为以下原因:

  • 未安装软件或其开发人员包
  • ldconfig 不知道这些库
  • 缺少告诉在哪里搜索库的编译器选项
  • 错误的库名称或缺少软链接 (libfoo.so -> libfoo.so.5)

现在我有:

/usr/bin/ld: cannot find -lboost_regex

但是 ldconfig 知道这一点:

$ ldconfig -p | grep boost_regex.so
    libboost_regex.so.5 (libc6,x86-64) => /usr/lib64/libboost_regex.so.5
    libboost_regex.so (libc6,x86-64) => /usr/lib64/libboost_regex.so

它也存在:

$ ls -l /usr/lib64/libboost_regex.so
lrwxrwxrwx 1 root root 19 Sep 24 08:19 /usr/lib64/libboost_regex.so -> libboost_regex.so.5
$ ll /usr/lib64/libboost_regex.so.5
-rwxr-xr-x 1 root root 1000224 Apr  2 09:48 /usr/lib64/libboost_regex.so.5

有什么想法或提示我缺少什么吗?

问候, 安迪

4

1 回答 1

-1

-lboost_regex选项告诉ld搜索/usr/lib64/libboost_regex.so. 这是 boost-regex 库的开发包提供的符号链接。

在 Fedora 上:

$ rpm -q --file /usr/lib64/libboost_regex.so
boost-devel-1.50.0-7.fc18.x86_64

在 Ubuntu 上:

$ dpkg -S /usr/lib/libboost_regex.so
libboost-regex1.49-dev: /usr/lib/libboost_regex.so
于 2013-12-16T17:37:07.320 回答