내 게시물을 무시하십시오. 나는 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)
솔루션이든 추가 디버깅이든 어떤 팁이라도 제공해 주셔서 감사합니다.