2016-05-24 15 views
2

Qt C++コードをコンパイルする32ビットのLinux仮想ボックスがあります。共有ライブラリの読み込み中にエラーが発生しました:libQt5Multimedia.so.5:共有オブジェクトファイルを開くことができません。そのようなファイルまたはディレクトリはありません。

対象のファイルを64ビットのLinuxボックスにコピーしています(32ビットの実行ファイルはこのPC上で実行する必要があります)。

ビルドでは動的リンクが使用されているため、必要なQtのlibファイルをコピーし始めました。私は、プログラムを実行して手動でこれを行うことを計画し、どのlibファイルが不足しているかを教えさせる+私は長い間(通常は)時間がかかりませんので、必要なファイルの多くを知っています。

だから私の64ビットボックスのターゲットフォルダに、私はファイルを持っている:

Rpe 

だから私は「RPE」と呼ばれる私の実行可能ファイルを実行すると、それは文句:

./Rpe: error while loading shared libraries: libQt5Multimedia.so.5: cannot open shared object file: No such file or directory 

私はこれが起こることを期待私の32ビットのlinux qt libフォルダから64ビットのLinuxボックスのターゲットディレクトリにlibQt5Multimedia.so.5ファイルをコピーします。しかし、それはまだ発見されていない同じlibQt5Multimedia.so.5ファイル文句を言っている、私は今、再びRPEの実行可能ファイルを実行して、私はそれは違うのlibファイルに文句を言うことを期待

Rpe 
libQt5Multimedia.so.5 

:私のターゲットフォルダで、私は今のファイルを持っています。

私はここで間違っていますか?

EDIT-1

LDD出力:私はbinサブディレクトリに実行可能とQtライブラリ(および他のあなたの "製品" のためのディレクトリを作成します

[email protected]:~/sandbox$ ldd Rpe 
    linux-gate.so.1 => (0xf7731000) 
    libQt5Multimedia.so.5 => not found 
    libQt5Network.so.5 => not found 
    libQt5Xml.so.5 => not found 
    libQt5Core.so.5 => not found 
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xf7616000) 
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf75f9000) 
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xf744a000) 
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf7404000) 
    /lib/ld-linux.so.2 (0x5661f000) 
[email protected]:~/sandbox$ 
+0

そして、何 'LDD は'言うこのライブラリからロードしなければならないのでしょうか? – trojanfoe

+0

@trojanfoe良い点は、私の質問にこれを追加しました:) –

+0

これで '/ usr/local/lib'やどこかにライブラリを追加する必要がありますか? – trojanfoe

答えて

1

ライブラリ)をサブディレクトリlibにコピーします。

私は $LD_LIBRARY_PATHを設定し、バイナリ(テストされていない)を実行するラッパースクリプトを追加することになり、親ディレクトリで

#!/bin/sh 
dirname="$(dirname "$0")" 
exename="$(basename "$0")" 

LD_LIBRARY_PATH=$LD_LIBRARY_PATH:"$dirname/lib" 
export LD_LIBRARY_PATH 
exec "$dirname/bin/$exename" $* 
関連する問題

 関連する問題