为什么 gdb 找不到我的共享对象库?

为什么 gdb 找不到我的共享对象库?

请忽略我的帖子。我一定是第 1000000 个发现 gdb 重置 LD_LIBRARY_PATH 的人。抱歉,如果浪费了您的一些时间!

作为记录,解决方案是不是在gdb里面说

set environment LD_LIBRARY_PATH etc.etc

因为这也会被忽略。相反,由于 gdb 启动一个新的 shell,您的代码将在其中执行,因此请将其放入您的 .profile 或 .tcshrc 或 .bashrc 或其他内容中。 gdb 将服从。干杯! -------------------------------- 剪剪剪剪 -------------- --------------------

这个问题困惑了我很久。

我正在尝试使用名为 ImageMagick 的图形包,并且我有最简单的程序:

#include <iostream>

#include <Magick++.h>

using namespace Magick;

int main( int argc, char* argv[] ) {

Magick::InitializeMagick(*argv);

std::cout << "Here I didit!" << std::endl;

}

我创建可执行文件很简单,如下所示:

g++ -g -o testIM testIM.cc "Magick++-config --cxxflags --libs"

其中的配置给出了这个:

localhost:~/snap> Magick++-config --cxxflags --libs -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -fopenmp -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -fopenmp -MAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/local/include/ImageMagick-7 -L/usr/local/lib -lMagick++-7.Q16HDRI -lMagickWand-7.Q16HDRI -lMagickCore-7.Q16HDRI

并且代码运行得足够好:

localhost:~/snap> setenv LD_LIBRARY_PATH /usr/local/lib localhost:~/snap> testIM Here I didit!

但不在调试器中!

localhost:~/snap> gdb testIM

GNU gdb (Ubuntu 8.1-0ubuntu3.1) 8.1.0.20180409-git

...omitted blurb.....

Reading symbols from testIM...done.

(gdb) run

Starting program: /home/acal/snap/testIM

/home/acal/snap/testIM: error while loading shared libraries: libMagick++-7.Q16HDRI.so.4: cannot open shared object file: No such file or directory [Inferior 1 (process 3847) exited with code 0177]

(gdb)

但该文件就在那里,并且应该可读:

-rw-r--r-- 1 root root 9406966 2019-10-09 14:39 libMagick++-7.Q16HDRI.a

-rwxr-xr-x 1 root root 1419 2019-10-09 14:39 libMagick++-7.Q16HDRI.la

-rwxr-xr-x 1 root root 3979344 2019-10-09 14:47 libMagick++-7.Q16HDRI.so

-rwxr-xr-x 1 root root 3979344 2019-10-09 14:45 libMagick++-7.Q16HDRI.so.4

-rwxr-xr-x 1 root root 3979344 2019-10-09 14:39 libMagick++-7.Q16HDRI.so.4.0.0

(3 个大小相同的文件中的 2 个是指向第 3 个文件的链接,我复制了整个文件以查看是否是问题所在,但不是。)另外:

你知道这可能是怎么回事吗?机器是Xubuntu 18.04。

localhost:~/snap> ldd testIM | grep Magick

libMagick++-7.Q16HDRI.so.4 => /usr/local/lib/libMagick++-7.Q16HDRI.so.4 (0x00007f0d0a144000)

libMagickWand-7.Q16HDRI.so.6 => /usr/local/lib/libMagickWand-7.Q16HDRI.so.6 (0x00007f0d09697000)

libMagickCore-7.Q16HDRI.so.6 => /usr/local/lib/libMagickCore-7.Q16HDRI.so.6 (0x00007f0d0900c000)

感谢您提供任何提示,无论是解决方案还是进一步调试。

相关内容