0

CentOS 5でコンパイルして実行しているソフトウェアがありますが、新しいマシンでコンパイルせずに変更せずにCentos 6で実行することに興味があります。

ここに課題があります: -
私のプロセスにはlibcap.so.1 などの特定の lib が必要ですが、centos 6 にはlibcap.so.2 など
の新しいバージョンがあります。古いソフトウェアを以下のハックのいずれかで動作させることができます

  1. libcap.so.2 へのシンボリックリンク (libcap.so.1) を作成します。
  2. libcap.so.1 を新しいマシン (centos 6) にコピーします。

2 つの間で推奨されることと、このアプローチに関する既知の問題はありますか。centos6 でのコンパイルは私の最後のオプションです。

4

1 に答える 1

0

そのようなシンボリック リンクの作成は、新しいバージョンにつながった正確な変更内容に応じて、機能する場合があります。特に、古いライブラリにあったルーチン/変数へのアクセスを削除しない、または大幅に変更しない最小限の変更である必要があります。残っているルーチン/変数の署名。ライブラリがシンボルのバージョン管理を使用している場合 (gcc標準の C ライブラリが行うように)、その.2バージョンには以前のバージョンで提供されていた完全な API がまだ含まれている可能性がありますが、そうするかどうかは頭の中でわかりませんlibpcap...

新しいライブラリが古い API をカプセル化していない場合、最も安全な方法は再コンパイルすることです。アプリケーションがミッション クリティカルではない場合、および/またはクラッシュやデータ破損の可能性に対処できる場合は、シンボリック リンク ルートを試しても (あまり) 害はないはずです...

于 2012-11-16T17:13:16.407 に答える