gdb가 내 공유 개체 라이브러리를 찾을 수 없는 이유는 무엇입니까?

gdb가 내 공유 개체 라이브러리를 찾을 수 없는 이유는 무엇입니까?

내 게시물을 무시하십시오. 나는 gdb가 LD_LIBRARY_PATH를 재설정한다는 것을 발견한 1,000,000번째 사람임에 틀림없습니다. 시간을 낭비했다면 죄송합니다!

참고로 해결방법은아니요gdb로 말해보세요

set environment LD_LIBRARY_PATH etc.etc

왜냐하면 이 또한 무시될 것이기 때문입니다. 대신, gdb는 코드가 실행될 새 셸을 시작하므로 이를 .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)

솔루션이든 추가 디버깅이든 어떤 팁이라도 제공해 주셔서 감사합니다.

관련 정보