![为什么 gdb 找不到我的共享对象库?](https://linux22.com/image/161990/%E4%B8%BA%E4%BB%80%E4%B9%88%20gdb%20%E6%89%BE%E4%B8%8D%E5%88%B0%E6%88%91%E7%9A%84%E5%85%B1%E4%BA%AB%E5%AF%B9%E8%B1%A1%E5%BA%93%EF%BC%9F.png)
请忽略我的帖子。我一定是第 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)
感谢您提供任何提示,无论是解决方案还是进一步调试。