ボックスで 3.4.7 カーネルを実行し、独自のカーネル モジュールを作成しています。そのうちの 1 つは他のモジュールの関数を呼び出す必要があります。
EXPORT_SYMBOL を使用して、他のカーネル モジュールから関数にアクセスできるようにしました。私の場合、私のモジュール「klm_sse」がこれを行います。
ここで、「klm_sse」によってエクスポートされたシンボルを使用する別のモジュールをロードしますが、ロードすると次のように文句を言います:
[22892.216551] klm_<...>: Unknown symbol sys_srv_register_multiple (err 0)
「cat /proc/kallsyms |」の出力は次のとおりです。ここで、klm_sse はモジュール名です。
ffffffffa013d170 r __ksymtab_sys_srv_register_multiple [klm_sse]
ffffffffa013d28b r __kstrtab_sys_srv_register_multiple [klm_sse]
ffffffffa012e9b0 t sys_srv_register_multiple [klm_sse]
「man」ページから、/proc/kallsyms のエントリに小文字 (ここでは「r」と「t」) が表示されている場合、シンボルがグローバルにエクスポートされていないことを意味することを読みました。
エクスポートをグローバルに表示して、他のユーザーがアクセスできるようにするにはどうすればよいですか?
これを修正するために必要なのはカーネル コンパイル オプションですか? これに関するご意見をお寄せいただきありがとうございます。私は文字通り、これについて 2 日間頭を悩ませています。
何百万も前もって感謝します