GNU/Linux >> Linux の 問題 >  >> Linux

バイナリで STT_GNU_IFUNC シンボルを回避するには?

一般に、UNIX システムは下位バイナリ互換性 (古いマシンでビルドされたバイナリが新しいマシンで引き続き実行される) をサポートしていますが、その逆はサポートしていません。新しいシステムでビルドされたバイナリが古いシステムで実行されるとは期待できません。 STT_GNU_IFUNC 最初のだけです

古いマシンで実行される新しいマシンでバイナリをビルドする必要がある場合は、このドキュメントを参照してください。

以前はこれを簡単にする「apgcc:移植可能なバイナリを作成する GCC ラッパー」がありましたが (上から参照)、なくなったようです;-(

最も簡単なオプションは、古いマシンでビルドすることです (以前は RedHat 6.2 でビルドしていましたが、結果のバイナリは どこでも 実行されました )。物理マシンで実際に RH-6.2 を実行する必要はなく、VM で起動するだけです。

もう 1 つの比較的簡単なオプションは、chroot を組み込むことです。 、再び古いディストリビューション (RH-6.2 など) のツールとライブラリを使用します。


APGCC はもう利用できないようです (おそらくこことここを除く)。これらの glibc ヘッダーは、古いヘッダー ファイルの 1 つを含めることで、C コードから移植可能な Linux バイナリを生成する最も便利な方法のようです。


Linux
  1. Linuxのコマンド履歴を管理する方法

  2. 再起動せずにLinuxマシンのホスト名を変更する方法

  3. Linuxをシャットダウンまたは再起動する方法

  1. マシンに構成されているDNSサーバーを確認する方法は? Linux / Windows / OSX

  2. gcc/cmake を使用して 64 ビット Linux マシンで 32 ビット バイナリをコンパイルする方法

  3. C プログラムを使用してマシンの MAC アドレスを取得する方法は?

  1. Linuxでプリンタを設定する方法

  2. LinuxでIPアドレスを見つける方法

  3. ルーターとして機能するマシンで Linux iptables 構成をどのように管理しますか?