私は単純なカーネルモジュール(developer.sonymobile.comからダウンロードしたソースを使用して)をビルドしようとしましたが、コンパイル後にinsmodできません:Unknown symbol __gnu_mcount_ncだから私は解決策を創設し、アセンブラを使って別のモジュールを書きました。 。このモジュールが正しくインモールドされた後、lsmodではすべてのモジュールが永久的であることがわかります。私は単純なファイルシステム(パーミッションが拒否されました - ポインタがnullの場合のデフォルトアクション)に問題があります.PC上でこのコードはエラーなしで動作します。ソニーのデバイスは、ソースとは異なるカーネル設定を持っています。どうして?
私は設定がソースコードで間違っていると思います(おそらく構造内のいくつかのフィールドのオフセットはデバイス内のものとは別のものです)。
ビルドされたバージョン:24.0.A.5.14(developer.sonymobile.comサイトからダウンロード)。
デバイスと同じ設定を得るために何かできますか?
私は/proc/config.gzを持っていないので、簡単に手に入れることはできません。
モジュールのソース:
#include <linux/module.h>
#include <linux/kernel.h>
int __init example_init(void)
{
printk("Hello world!\n");
return 0;
}
void __exit example_exit(void)
{
printk("example module exit\n");
}
module_init(example_init);
module_exit(example_exit);
そして私はHello Worldのを参照してください! dmesgではモジュールはまだパーマネントです。私はここで見つける__gnu_mcount_ncの
出典:http://doc.ironwoodlabs.com/arm-arm-none-eabi/html/getting-started/arm-mcount.html