8

複数の Linux ディストリビューションで実行できるバイナリ パッケージを構築しようとしています。現在、Ubuntu 10.04 でビルドされていますが、Ubuntu 8.04 では次のエラーで失敗します。

./test: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./test)
./test: /usr/lib/libstdc.so.6: version `GLIBC_2.11' not found (required by ./test)

この問題を解決するための好ましい方法は何ですか? 古い glibc を新しいボックスにインストールしてビルドする方法はありますか? それとも古いディストリビューションでビルドする必要がありますか? また、古い glibc に対してビルドした場合、新しい glibc でも動作しますか?

または、代わりに、問題を解決するためにインストールできる便利なコンパイラ フラグまたはパッケージがいくつかありますか?

4

2 に答える 2

5

私が見つけた最善の解決策は、Debian 安定版を実行している仮想マシンをインストールし、その上に構築することです。Debian 安定版は十分に古いため、それを使用してビルドされたパッケージは、Ubuntu などの他の Debian ベースのディストリビューションで実行できます。さまざまなソフトウェアの新しいバージョンで修正されているが、Debian 安定版にバックポートされていない重大ではないバグを回避する必要がある場合があります。

于 2010-05-04T20:33:42.803 に答える
1

最近のすべてのディストリビューションで確実に実行したい場合は、選択した libC に対して静的にリンクすることも検討してください。ただし、新しいカーネルでのみ提供される機能 (新しいシステム コールなど) を使用すると、問題が発生する可能性があります。

于 2010-05-04T23:22:03.887 に答える