シナリオ1:私は(実際には、Elrepoからkernel-lt
)バニラカーネル3.10とRHEL6上にIBM
GPFS
ドライバをインストールしようとしています。適切な機能をチェック
- 構造体xは彼らのコードは罰金にコンパイルし、そのようなメンバー
- 型の不一致
を持っていない機能に渡されたの数が多すぎ/少なすぎる引数:GPL部分が起因してコンパイルされませんRHEL/Suseのカーネルは、古いものよりも新しいものですが、ここでは失敗します。
シナリオ2: 私は株式カーネルでRHEL6
上のオープンソースsoftiwarp
ドライバをコンパイルしようとしているが、それはしかし、それはバニラカーネル上で正常にコンパイルシナリオ1と同じエラーで失敗します。
#if LINUX_KERNEL_VERSION >= 2061300
#define FOO <newer variant>
#else
#define FOO <older variant>
#endif
しかし、RHELおよびSUSEは、多くのバックポートとバグ修正を持っているので、彼らの3.10.101
はバニラ3.10.101
と同じではありません。彼らの機能チェックヘッダーは次のようになりので
このすべてがあります。
の機能(バージョン番号ではありません)をチェックするコードの書き方は?ユーザ空間プログラムでは、私はAC_CHECK_MEMBER
/AC_CHECK_FUNC
何ですか? Autotoolsはlibcの下に大きく依存しています。自分自身をハッキングせずにカーネルでどのように使うことができますか? – 0andriy
@AndyShevchenko、あなたは '' gcc'と 'make'がlibcに依存していると言うかもしれません。だから、どうやってそれらを使ってカーネルを構築できますか?"実際には、あなたの問題に関連するAutoconfのチェックは、コンパイラを使ったテストに依存しているので、私が言ったように、あなたが必要としているカーネルヘッダが正しいものであることを保証する必要があります。カーネルビルド(例:ライブラリチェック)には意味がありませんが、それは意味をなさないチェックを使うことができないという意味ではありません。 –
第1段落@JohnBollingerの私の無知のあなたの仮定が好きではありませんが、残りの答えは意味をなさない。私はそれを受け入れる – basin