0

では/opt、GTK tarballを解凍し、いくつかの.cファイルをマイナーな方法で変更し、 ./configure(オプションなしで)実行してmake(ただし、インストールは行わないで)、GTKのテストの1つを実行して、変更が実装されたことを確認しました。彼らです。

それをバックアップするためにlibgtk、Linuxディストリビューションの名前を変更しました。その場所で、私は自分のmodを持つin/usrへのシンボリックリンクを作成しました。libgtk/opt

これは、2.0バージョンと3.0バージョンの両方で実行しました。

それでも、Firefoxなどのアプリはまだディストリビューションのデフォルトライブラリを使用しているようです。

どのような手順が欠けていますか?

4

2 に答える 2

0

私はそれを解決したと思います。名前にドットを追加して、元のlibgtkをバックアップしました。例えば、

libgtk-x11-2.0.so.0.2400.10

名前を変更

libgtk-x11-2.0.so.0.2400.10.original

ここで、ドットをダッシュ​​に変更しました: ....original-original、ldconfigはバックアップコピーを無視するようになりました。これは良いことです。

以下はldconfigに対して堅牢です。

lrwxrwxrwx  libgtk-3.so -> libgtk-3.so.0
lrwxrwxrwx  libgtk-3.so.0 -> libgtk-3.so.0.400.2.alt
lrwxrwxrwx  libgtk-3.so.0.400.2 -> libgtk-3.so.0.400.2.alt
-rw-r--r--  libgtk-3.so.0.400.2-original
lrwxrwxrwx  libgtk-3.so.0.400.2.alt -> /opt/gtk/gtk+-3.4.2/gtk/.libs/libgtk-3.so.0.400.2

lrwxrwxrwx  libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0
lrwxrwxrwx  libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.2400.10.alt
lrwxrwxrwx  libgtk-x11-2.0.so.0.2400.10 -> libgtk-x11-2.0.so.0.2400.10.alt
-rw-r--r--  libgtk-x11-2.0.so.0.2400.10-original
lrwxrwxrwx  libgtk-x11-2.0.so.0.2400.10.alt -> /opt/gtk/gtk+-2.24.10/gtk/.libs/libgtk-x11-2.0.so.0.2400.10
于 2012-11-20T06:07:51.037 に答える
0

実行に関するergosysのコメントに追加します。これは、でカスタマイズしたバージョンライブラリディレクトリ(または正しいバージョン番号を使用するldconfigなど)へのパスを追加することです。後でrootとして実行することにより、リンカーキャッシュを更新する必要があります。ただし、カスタマイズしたバージョンへのパスは、システムへのパスの前に指定する必要があります。そうすれば、変更はシステム全体に広がり、ディストリビューションによって作成されたファイルを台無しにすることはありません。これにより、パッケージマネージャーが満足します。元のバージョンとカスタマイズされたバージョンは別々のディレクトリにあり、メンテナンスが容易になります。次のようなオプションを使用します。/opt/gtk-2.xx-customized/lib/opt/gtk-3.xx-customized/lib/etc/ld.so.confldconfig--prefix./configure --prefix /opt/gtk-2.xx-customizedビルドしたソフトウェアをインストールする場所を指定します。以前にそのディレクトリを作成し、そこに書き込むための対応する権限をユーザーに与えることを忘れないでください。

詳細についてはお読みくださいman ldconfig

何らかの理由で、元のライブラリセットを使用するアプリケーションをたまに実行する場合は、LD_LIBRARY_PATHenvironment varを使用してld、で既に認識されている他のすべてのディレクトリよりも先に検査するディレクトリを指定します。元のライブラリはどこにありますか。構文はLD_LIBRARY_PATH="/usr/lib" name-of-your-applicationです。64ビットシステムでは、ライブラリディレクトリの名前がlib64である可能性があることを忘れないでください。

于 2012-11-20T09:27:58.990 に答える