2

libpngをバージョン1.2から1.5にアップグレードする必要があります。このため、これを行う必要があります。libpng警告:アプリケーションはlibpng-1.2.26でビルドされていますが、1.5.2で実行されています。私はLubuntu11.10を使用していますが、Canonicalリポジトリではlibnpg 1.5はまだリリースされていませんが、Debianのものには最初は私に合うテストパッケージ( http://packages.debian.org/search?keywords=libpng )があります。DebianリポジトリをSynaptecに追加し、libpng15をインストールできましたが、IDEがlibpng15の代わりにlibpng12を使用するソースコードをコンパイルする場合、これらのパッケージはlibpng12を置き換えません。

これを解決するために、libpng15 debパッケージをダウンロードして解凍し、コントロールファイルのReplacesConflictsProvidesタグをlibpng15テキストに変更しました。次に、変更されたdebを実行しましたが、libpng12が置き換えなしでアンインストールされ、Lubuntuがそれに大きく依存しているため、GDebiエラーと一般的なシステム障害しか発生しませんでした。これにより、コンピューターが実行したため、Lubuntuを再インストールする必要がありました。 Linuxで再度起動しないでください。はい、この解決策は私が考える最も良い方法ではありません。

それで、パッケージをアップグレードして、新しいバージョンが存在するが、それがまだ配布リポジトリにない古いバージョンを置き換える方法はありますか?libpngのubuntuリポジトリを見つけました。ソースからビルドされたLinuxのパッケージをアップグレードするにはどうすればよいですか?。これまでのところあまり決定的ではありませんが。

4

4 に答える 4

3

新しいバージョンがまだ配布リポジトリにないパッケージをアップグレードして置き換える方法がわかりません。しかし、あるライブラリXが他のライブラリYの特定のバージョンに依存している場合、Xのソースコードに変更を加えない限り、その依存関係のバージョンを変更する方法はないことに気付きました。つまり、ライブラリXは目的のバージョンを指すように再コンパイルされます(通常、構成タグを使用して)。ライブラリYのシンボリックリンクを変更して新しいバージョンを指すようにするなど、いくつかのトリックを実行できますが。次に、コンパイラは文句を言って古いバージョンを要求します。

多分これは今明らかに見えます。ただし、再コンパイルする必要のあるソフトウェアに何時間もかかる場合、依存関係が解決されていない場合、またはビルドエラーが発生する場合は、熱力学の法則に違反していても、コンパイルを回避しようとします。

したがって、私の場合、Qtを再コンパイルする必要があり、-system-libpng構成タグを使用することで、Qtは、組み込みライブラリではなく、システムlibpngライブラリを使用する必要があることを理解しました。そして、8時間のコンパイルの後、このlibpngの問題を解決するビルドに成功しました。

コメントと提案をみんなに感謝します。

于 2012-01-24T23:52:41.747 に答える
1

あなたが経験しているすべての問題については、単にソースからコンパイルして、にインストールする方が簡単かもしれません/usr/local/usrdebsのようにではなく)。これは、(make buildシステムを使用して)コンパイルしたプログラムのいくつかのライブラリ依存関係に対して問題なく実行しました。ただし、コンパイルしているプログラムが適切なバージョンのパッケージを選択するのに問題があるようです。私の意見では、それが本当の問題です。ライブラリの複数のバージョンを同時にインストールすることはサポートされていますが、DebianとUbuntuのリポジトリを混在させる場合はaptではおそらくサポートされません。

プログラムをコンパイルするときは、gcc -lpng15の代わりにを使用してください-lpng。gcc情報マニュアルによると、オプションを選択する-lnameと、リンカーlibname.aはlibフォルダーを検索します。私のシステム(Ubuntu 10.04)では、libpng.aはへのシンボリックリンクlibpng12.aです。これが、プログラムが間違ったライブラリを選択している理由です。

于 2012-01-23T05:11:28.543 に答える
0

に対して適切にリンクするlibpng15には、もインストールする必要がありますlibpng15-dev

于 2012-01-23T07:09:11.737 に答える
0

このppaを追加してみてください:https ://launchpad.net/~linaro-maintainers/+archive/overlay 。Oneiric用のlibpng1.5が含まれています。

を実行してインストールできます

sudo add-apt-repository ppa:linaro-maintainers/overlay
sudo apt-get update
sudo apt-get install libpng1.5
于 2012-01-23T06:44:01.067 に答える