即使 ldconfig 也找不到库

问题描述 投票:0回答:2

此处报告的此问题有多种变体,据我了解的响应,可归结为以下原因:

  • 软件或其开发包未安装
  • 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

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

问候, 安迪

ld
2个回答
0
投票

-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

0
投票

这是一篇旧帖子,但我今天也遇到了问题并想分享。

“ldconfig”用于在运行时加载库。它在构建期间对linking没有影响。我也很惊讶。

以下是我针对链接问题找到的两个解决方案:

  1. 使用 -L 构建时指定库目录

  2. 将您的库复制/移动到“标准”位置,例如 /usr/lib 。您可以尝试符号链接,但这对我不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.