mcommit's message

ソフトウェア開発の仕事をしているsimotinといいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

undefined reference to `___udivsi3'

最近、「12ステップで作る組込みOS自作入門」

12ステップで作る組込みOS自作入門12ステップで作る組込みOS自作入門
(2010/05)
坂井 弘亮

商品詳細を見る

を参考にしながら AKI-H8 3069Fのボードで遊んでいます。

組込み開発環境ではprintf()関数がないので、相当する関数を自作する必要があります。
そこで、次のようなIFの関数を作る事にしました。

void printNumDec(ULONG num)

引数で受け取った num を10進数でシリアルに出力する関数です。

この関数ないで、以下のようなコードを書いたらコンパイルエラーになりました。


while ( (num / column == 0) )
{
//column /= 10;
//cnt--;
}

gccのコンパイル結果
"lib.c:(.text+0x175): undefined reference to `___udivsi3'"

どうも
while ( (num / column == 0) )
の部分で起きているみたいです。

whileループの中で計算をしたらだめなのかと思いましたが、
通常VisualStudioやGCCではこんなエラーは発生しません。

まだ原因がよくわかっていないので調べてみたいと思います。




【追記】
column /= 10;

のようなコードでも

lib.c:(.text+0x18d): undefined reference to `___udivsi3'

とのリンクエラーが発生しています。
やれやれ。。。