相关疑难解决方法(0)

ld找不到现有的库

我试图在这个Debian lenny系统上将应用程序与g ++链接起来.ld抱怨它无法找到指定的库.这里的具体示例是ImageMagick,但我也遇到了类似的问题.

我正在调用链接器:

g++ -w (..lots of .o files/include directories/etc..) \
-L/usr/lib -lmagic
Run Code Online (Sandbox Code Playgroud)

ld抱怨:

/usr/bin/ld: cannot find -lmagic
Run Code Online (Sandbox Code Playgroud)

然而,libmagic存在:

$ locate libmagic.so
/usr/lib/libmagic.so.1
/usr/lib/libmagic.so.1.0.0
$ ls -all /usr/lib/libmagic.so.1*
lrwxrwxrwx 1 root root    17 2008-12-01 03:52 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0
-rwxrwxrwx 1 root root 84664 2008-09-09 00:05 /usr/lib/libmagic.so.1.0.0
$ ldd /usr/lib/libmagic.so.1.0.0 
    linux-gate.so.1 =>  (0xb7f85000)
    libz.so.1 => /usr/lib/libz.so.1 (0xb7f51000)
    libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb7df6000)
    /lib/ld-linux.so.2 (0xb7f86000)
$ sudo ldconfig -v | grep "libmagic"
    libmagic.so.1 -> libmagic.so.1.0.0
Run Code Online (Sandbox Code Playgroud)

我如何进一步诊断这个问题,哪些可能是错的?我做的事情完全是愚蠢的吗?

linux linker gcc shared-libraries shared-objects

163
推荐指数
5
解决办法
59万
查看次数

Ubuntu 11.10 链接 perftools 库

我无法在 Ubuntu 11.10 中获得 gcc 以在 google perftools -lprofiler 中正确链接。问题似乎是链接器丢弃了未在程序中直接使用的库。

一个例子会有所帮助。

我们称之为 main.cpp:

#include <math.h>

int main()
{
  double value;
  for (int i=0; i < 1000000; i++)
  {
    for (int j=0; j < 1000; j++)
      value = sqrt(100.9);
  }

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译使用:

g++ -c main.cpp -o main.o
g++ main.o -o main -lm -lprofiler
Run Code Online (Sandbox Code Playgroud)

使用 ldd ./main 检查可执行文件:

  linux-vdso.so.1 =>  (0x00007fff5a9ff000)
  libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f32bc1c9000)
  /lib64/ld-linux-x86-64.so.2 (0x00007f32bc593000)
Run Code Online (Sandbox Code Playgroud)

通常,我会运行:

CPUPROFILE=/tmp/profile ./main
Run Code Online (Sandbox Code Playgroud)

生成配置文件输出。但由于配置文件库未链接,因此不会生成配置文件输出。

我确保分析器库在我的搜索路径中,并尝试直接链接共享库和静态库。

上述测试在 Ubuntu 10.04、Ubuntu 10.10、Ubuntu 11.04、SUSE 12.1 和 Fedora …

c c++ ubuntu linker

6
推荐指数
1
解决办法
3008
查看次数

标签 统计

linker ×2

c ×1

c++ ×1

gcc ×1

linux ×1

shared-libraries ×1

shared-objects ×1

ubuntu ×1