タグ付けされた質問 「libraries」

ライブラリは、プログラムが使用できる機能の集まりです。これらはプログラムによって動的にロードすることも、プログラムにコンパイルすることもできます。

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

4
ローカルに開発ファイルをインストールして、rootアクセスなしでシステムを構築しますか?
私が作業しているサーバーがあり、古いバージョンのLinuxを実行しています。私はシステムへのrootアクセス権を持っていないので、私が頻繁に使用するツールのより新しいバージョン(Vim 7.3)を構築したいと思いました。ビルドして〜/ binにインストールするだけだと思っていました。ただし、システム全体にインストールされていないncurses開発ファイルが必要です。私はncurses-devel rpmを見つけ、「lib」および「include」フォルダーを抽出しました。それらをどこに置き、ローカルでパッケージを適切に構成および構築できるように./configureスクリプトにそれらを見つけるように指示するにはどうすればよいですか? 編集:私はVirtualboxに同じOSをインストールし、そこにパッケージをビルドしてバイナリをコピーすることで、これを回避することになりました。
10 libraries  centos 

3
必要な依存関係を提供するFedoraパッケージを見つける方法は?
リポジトリに存在しないソフトウェアをインストールすると、依存関係が満たされないという問題が発生します。エラーは通常、不足しているライブラリまたはコマンドを教えてくれます。次に、を実行しyum searchます。必要なライブラリ/コマンド名と一致するパッケージ名がある場合、それは簡単です。 yumで何も見つからないときに問題が発生します。私はWebを検索し始め、ライブラリへのリンクを見つけることがよくあります。しかし、これらのサイトを信頼するかどうか、ダウンロードしたライブラリをどこにコピーするか、ライブラリが何をするかなど、私にはわかりません。多くの場合、それは別のディストリビューションまたは別のFedoraバージョン用であることが想定されており、それらが私のもので動作するかどうかはわかりません。これらのライブラリはおそらくリポジトリ内のいくつかのパッケージに存在しているのではないかと思います。ランダムなGoogleのサイトからではなく、そこから入手したいのです。 ライブラリの名前がある場合、ライブラリがどのパッケージに属しているかを知るにはどうすればよいですか?たとえば、ライブラリlibpng12.so.0が必要になりましたが、どうすれば入手できますか?そしてそれがライブラリではなくコマンドである場合、それを提供するパッケージをどのように見つけますか?

2
置き換えたばかりのライブラリの古いバージョンを使用している実行中のプログラムを特定する
CVE-2014-0160(OpenSSL Heartbleedバグ)に対処するためのアップデートをインストールした後、libsslを使用している可能性のあるものを再起動するように注意する必要がありました-Apacheや私のVPNソフトウェアなどの多くのサービスには、古い脆弱なlibsslがまだロードされていますアップ、そして私のパッケージマネージャーはこれを修正しようとしませんでした。 これは私に考えさせられました:共有ライブラリを更新した後、どのバージョンの実行中のプログラムが現在ライブラリの古いバージョンにリンクされているかを確実に見つけるにはどうすればよいですか?実行中のプロセスにリンカーレベルまたはファイル記述子レベルで問い合わせて、ロードした特定の共有ライブラリのインスタンスが現在ディスク上にあるインスタンスと同じであるかどうかを確認する方法が必要だと思います。

1
ライブラリがリンクされているライブラリのバージョンを見つける
不明なUbuntuマシンでコンパイルされたライブラリーがあり、そのマシンがコンパイル時に持っていたUbuntuのバージョンを確認したい。 私の考えは、使用されているさまざまなライブラリ(カーネルなど)のバージョンを探して見つけ、これらのバージョンがさまざまなリリースで変更されたことを知っていた。とを使用nmしてみlddましたが、関連情報を見つけることができません。 助言がありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.