(toppers-users 3209) Re: GCCでリンクエラー (hardware_init_hook、software_init_hook)
choronos
asuka.choronos @ gmail.com
2010年 6月 4日 (金) 15:47:26 JST
あすかと申します。
> Linkのオプションの秘密か
ご推測のとおり、リンク設定で行っているはずです。
厳密には、リンカスクリプトファイルに
PROVIDE(_hardware_init_hook = 0);
PROVIDE(_software_init_hook = 0);
#アンダースコアは環境依存なので適宜置き換えが必要です
と記述すると、undefinedであればNULL(=0)にリンカが
割付けを行うようになっています。
定義がある場合は、そちらの実アドレスでリンクされます。
GNU環境のJSP、ASPに入っている*.ldファイルを
ご参照いただければ実際の記載が見つかると思います。
以上、よろしくお願いします。
(2010/06/04 15:37), koizumi yoshiyuki wrote:
> こいさんです
>
> 今更聞けない問題に遭遇しています。少々恥ずかしいですが、どなたかお教え願えませんでしょうか?
>
> GCCを使っていますが、makeでbuildはしていません、とあるIDEを使っています。そこではLinkでエラーが出ます。
>
> undefined reference to `software_init_hook'
> undefined reference to `hardware_init_hook'
>
> start.Sではsoftware_init_hook、hardware_init_hook'がNULLなら呼び出さないようにしています。ソースコードをgrepしましたが、software_init_hook、hardware_init_hook'は見つかりません。私の認識ではundefinedで正しいと思うのですが、TOPPERSのBuildではなぜ2つの関数名はundefinedではなくNULLとなるのでしょうか。Linkのオプションの秘密か、makeにがありそうです。
>
> とりあえずは、voif software_init_hook(void){}で逃げていますが、聞くは一時の恥。
>
> よろしくお願いします。
>
> 追伸
>
> 以上