[解決済み] 特定のglibcのバージョンにリンクするにはどうしたらいいですか?
質問
Ubuntu Lucid 10.04 PCで何かをコンパイルすると、glibcに対してリンクされます。Lucidはglibcの2.11を使用しています。このバイナリを古いglibcを持つ別のPCで実行すると、コマンドはglibc 2.11がないといって失敗します...。
私の知る限り、glibcはシンボルバージョニングを使用しています。特定のシンボルバージョンに対してリンクするようにgccを強制することはできますか?
具体的な使い方としては、ARM用のgccクロスツールチェーンをコンパイルしようと思っています。
どのように解決するのですか?
glibcがシンボルバージョニングを使用していることは正しいです。 もし興味があるなら、glibc 2.1 で導入されたシンボル・バージョニングの実装は以下のように記述されています。 こちら で説明したSunのシンボルバージョニングスキームを拡張したものです。 こちら .
バイナリを静的にリンクするのも一つの方法です。 これはおそらく最も簡単なオプションです。
また、バイナリを chroot ビルド環境でビルドしたり、glibc の 新しい => glibc- 古い クロスコンパイラです。
によると
http://www.trevorpounds.com
ブログ記事
古いバージョンのシンボルへのリンク (glibc)
を使用することで、有効である限り、任意のシンボルを古いものと強制的にリンクさせることが可能です。
.symver
バージョン管理されたシンボルを定義するために使用される疑似操作です。 次の例は、この擬似オペレーティング・システムと同じように
ブログ記事
.
次の例は、glibc の realpath を利用していますが、古い 2.2.5 のバージョンに対してリンクされていることを確認しています。
#include <limits.h>
#include <stdlib.h>
#include <stdio.h>
__asm__(".symver realpath,realpath@GLIBC_2.2.5");
int main()
{
const char* unresolved = "/lib64";
char resolved[PATH_MAX+1];
if(!realpath(unresolved, resolved))
{ return 1; }
printf("%s\n", resolved);
return 0;
}
関連
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
Linuxのデスクトップの背景を画像で引き伸ばし表示にする方法とは?
-
Kali Linuxのデスクトップの外観スタイルを変更するには? KALIの外観の最適化のヒント
-
エラーの解決方法 お客様のバージョンは /bin/bash: java: コマンドが見つかりませんでした。
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] エクスポートされた環境変数を削除する方法を教えてください。
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
rsyncとinotfiyの組み合わせでリアルタイムバックアップ問題を実現
-
中国版「浮世」を含むUbuntu 20.04.2リリース
-
Linux Mintで入力メソッドを削除する方法は?Linux Mintで冗長な入力メソッドを削除するためのヒント
-
[解決済み] gcc: libc の必要なバージョンを減らす
-
Process.waitFor()の戻り値の意味するところ
-
[解決済み] Bashシェルスクリプト - フラグをチェックし、その値を取得します。
-
[解決済み] エラーです。Can't open display: (null)と表示されることがあります。
-
[解決済み] Unix/Linuxで、ファイルのあるフォルダを別のフォルダにコピーするにはどうしたらいいですか?[クローズド]
-
[解決済み] ターミナルで現在の日付と時刻を取得し、それに対してターミナルでカスタムコマンドを設定するにはどうすればよいですか?[クローズド]です。
-
[解決済み] インライン名前空間は何のためにあるのですか?