私たちの計算クラスターは、非常に古いバージョンのCentOSを実行し、古いカーネル(2.6.18)と、もちろん古いライブラリとバイナリを使用しています。すべてを更新するには、すべてのノードで多くの作業が必要になるため、これはオプションではありません。
(および/または)のC++11
新しいバージョンを必要とする、したがって新しいバージョンを必要とするプログラムをコンパイルして使用しようとしています。私はシステムをいじりたくないので、ローカルディレクトリツリーで非rootユーザーとしてこれを実行したいと思います。gcc
clang
問題は、マシンに存在するものgcc
よりglibc
も新しいものが必要であることです。したがって、おそらくここで説明するようglibc
に、ローカルlib/
ツリーでの別の新しいバージョンを維持する必要があります。
私は失われていますどこでどのように必要なすべてのバイナリに私の地元のlibsのパスI「決め打ち」を行う、すなわち、あるgcc
、g++
など?LD_LIBRARY_PATHをローカルlib/
ツリーに設定すると、コンパイルされていないELF file OS ABI invalid
新しいlibm.so
/ を使用したいため、すべてのシステムバイナリが機能しなくなります()libc.so
。
だから、それを包むために:(含む新しい、ローカル開発スタックを維持する適切な方法は何でglibc
、gcc
rootとしていじりせずに古いシステムに並列など)は?
副次的な質問として、LD_LIBRARY_PATHを設定することは、SE全体で解決策として投稿されglibc
ます。私にとって、システムバイナリ(などls
)を実行しようとすると、上記のエラーが発生します。どうして?私は何か間違ったことをしましたか、これは意図された動作ですか?