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)

ソリューションであれ、追加のデバッグであれ、どんなヒントでも提供していただきありがとうございます。

ベストアンサー1

おすすめ記事