2

共有ライブラリの rpm を作成しています。.spec ファイルでは、%install 部分に通常のインストール コマンドを記述し、いくつかのソフト リンクを作成し、%post と %postun で ldconfig を実行しています。既にライブラリをコンパイルして削除しているため、rpm でライブラリをビルドしていません。しかし、共有ライブラリを rpm でインストールする前にライブラリ (開発フォルダ内) のファイル サイズを見ると、その 24k であり、/usr/lib64/ に共有ライブラリのデプロイされたファイルを見ると、サイズは次のようになります。展開前と展開後のライブラリのハッシュが一致しないため、約23.8kです(現時点では一致させる必要があります)。何が問題になる可能性がありますか?

どんな助けでも大歓迎です。

編集:両方のライブラリファイルを統計しています。展開前の共有ライブラリ ファイルは、rpm による展開後のファイルよりも 8 ブロック多くなります。

4

1 に答える 1

4

何が変化を引き起こしているのかについては、さまざまな可能性があります...

1 つ目は、RPM が一部のシンボルを削除している可能性があることです。エクスポートされていない内部関数のシンボルがある場合、それらを削除することを選択する可能性があります。

また、RPM は通常、デバッグ情報を別のファイルに抽出しようとするため、ファイルからさまざまな ELF セクションを削除している可能性があります。これは、別の debuginfo パッケージに配置されます。ライブラリに実際のデバッグ情報がない場合でも、このプロセスによって削除される空のデバッグ セクションが残っている可能性があります。

何が変更されているかを理解する最善の方法は、ライブラリの 2 つのバージョンを調べてreadelf、セクション (によって報告されたreadelf -S) またはシンボル (によって報告された) のリストが変更されたかどうかを確認することreadelf -sです。

于 2012-12-21T11:37:34.027 に答える