2016-03-31 4 views
0

私は単純なカーネルモジュール(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

答えて

0

プロファイルを使用してコンパイルでくださいあなたがカーネルモジュールをビルドする際に-pgフラグを有効にしますか?それはそのように見えます。

CFLAGSのカーネルモジュールMakefile。

関連する問題