Linux libgpodとrhythmboxでのリンクを強制する方法
-
10-10-2019 - |
質問
OK、Linuxライブラリに機能を追加しました。
ただし、機能性を確認しようとしているプログラムを「インストール」した後でも、以前のバージョンにリンクしています。
したがって、「Make install」は私のライブラリをここに置きます: '/usr/local/lib'および '/usr/local/include'
構成で以下を使用しました:./Configure- Enable-Maintainer-Mode -Enable-uninsted-build 'cflags = -g -o0' 'cxxflags = -g -o0' 'jflags = -g -o0' 'fflags = -g -o0 'cppflags =' -l/usr/local/lib/-usr/local/include/gpod-1.0/ '
しかし、プログラムを実行しようとすると、「シンボルが見つかりません」と「プラグインはロードできません」を取得します
私が生成されたプラグインをlddするとき、〜/開発/rhythmbox/plugins/ipod/.libs $ ldd libipod.so
Linux-gate.so.1 =>(0x00d97000)
liblhythmbox-core.1 => /home/gary/development/rhythmbox/shell/.libs/librhythmbox core.so.1(0x009ad000)
libgpod.so.4 => /usr/lib/libgpod.so.4(0x00509000)
それは明らかに間違ったライブラリにリンクしているために強調されています...私がメイクファイルを見ると、私は次のことを見ます:
iPod_cflags = -pthread -i/usr/local/include/gpod -1.0 -i/usr/includ/glib -2.0 -i/usr/lib/glib -2.0/include -i/usr/include/gdk -pixbuf -2.0 -i/usr/include/libpng12
ipod_libs = -pthread -l/usr/local/lib -lgpod -lgdk_pixbuf -2.0 -lm -lgobject -2.0 -lgmodule -2.0 -lpng12 -lgthread -2.0 -lrt -lglib -2.0
したがって、CPPFLAGSはプラグインに渡されており、.depsでは、適切なヘッダーファイルが含まれていることがわかります。
〜/Development/Rhythmbox/Plugins/iPod/.Deps $ rb-ipod-source.po |グレップGPOD
/usr/local/include/gpod-1.0/gpod/itdb.h ../../lib/eel-gconf-extensions.h
/usr/local/include/gpod-1.0/gpod/itdb.h:
Ubuntu 10.10
何か案は?
解決
設定する必要があります LD_RUN_PATH
に /usr/local/lib
実行する前に configure
と make
. 。これは埋め込まれます /usr/local/lib
実行可能ファイルへの共有ライブラリ検索パスとして。
他のヒント
libgpod.so
ライブラリの古いバージョンを指しています。