を使用して64ビットモジュールを32ビットカーネルにロードする64ビットプロセッサシステムでコンパイルされた.ko
ファイル(カーネルオブジェクトファイル)を32ビットプロセッサシステムにロードできますか?insmod
私は私のシステムではinsmodのコマンドを発行したときに実際に、私は次のエラーを取得しています:
insmod: error inserting 'be2net.ko': -1 Invalid module format
を使用して64ビットモジュールを32ビットカーネルにロードする64ビットプロセッサシステムでコンパイルされた.ko
ファイル(カーネルオブジェクトファイル)を32ビットプロセッサシステムにロードできますか?insmod
私は私のシステムではinsmodのコマンドを発行したときに実際に、私は次のエラーを取得しています:
insmod: error inserting 'be2net.ko': -1 Invalid module format
32ビットシステムで64ビットコードを実行することはできません。要件に応じて、逆も可能です(64ビットシステムでは32ビットソフトウェアまたはライブラリを実行)が、32ビットアーキテクチャでは64ビットコードを理解できません。システム上でモジュールをコンパイルする必要があります。
まず、カーネルソースをkernel.orgからダウンロードします。その後、一度そこ
linux/drivers/net/benet
にあなたのために働く必要があります(あなたの通常のユーザーとして)タイプ
make
、その後
sudo insmod be2net.ko
を抽出し、そしてCD。
いいえ、32ビットカーネルに64ビットモジュールをロードすることはできません、そして、なぜそれがありますエラーが発生しています。その理由は、64ビットおよび32ビットプログラムに互換性のないABI(例えば、異なる呼び出し規約)があるためです。また、64ビットアプリケーションを32ビットライブラリとリンクできない理由もあります。
insmodは一般的に曖昧なエラーメッセージを表示します。より詳細なメッセージについては、dmesg
の出力をご覧ください。
コンパイルされたプロセッサはまったく問題ではありません。コンパイラオプションとコンパイラオプションは重要です。 64ビットプロセッサ用にコンパイルされた場合は、別の命令セットを使用するため、32ビットプロセッサ上で実行することはできません。
ただし、64ビットプロセッサはクロスコンパイラを実行して32ビットのバイナリを作成できます。あなたがこれをしたことはありそうもありません。
私はできないと思います。 –