-PR-
解決済み

GCCでの割り算の方法を教えて下さい。

  • 困ってます
  • 質問No.17614
  • 閲覧数425
  • ありがとう数6
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 82% (39/47)

SH2の組み込みシステムのソフトをGCCにて開発しています。分母が変数の下記のような割り算のプログラムを作成した所LINKエラーが出て困っています。ちなみに分母が定数の時はOKです。どなたか初心者なので易しく解説して頂けないでしょうか?よろしくお願い致します。

int a,b = 10;

a=30/b;


エラー内容
undefined reference to '__sdivsi3'
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.2
レベル12

ベストアンサー率 31% (161/506)

単にライブラリがないだけでしょ。
コンパイラのインストールがうまくいってないか、
環境設定がうまくいってないのだと思います。

定数の除算でエラーが出ないのは、
コンパイル時にライブラリではなく、
即値専用の割り算ルーチンに変換されるからです。
お礼コメント
onken

お礼率 82% (39/47)

早速の回答ありがとうございます。
ご指摘の通り、これまでSAMPLEのコンパイルバッチファイルをそのまま使っていたのですが、これに問題がありました。
コンパイルバッチファイルを調査した所、リンカオプションコマンドの中に標準ライブラリ参照が含まれていない事がわかりました。この参照を追加した所OKとなりました。初心者にはなかなか難しいです。
ありがとうございました。
投稿日時 - 0000-00-00 00:00:00

その他の回答 (全1件)

  • 回答No.1
レベル10

ベストアンサー率 66% (103/155)

SH2を使っていたのはかなり前で、資料も手元に残っていないんですが...。

SH2は命令長16bitの、最低限のCPU命令しか持っていません。
したがって、割り算などの(Cレベルでは)基本的な命令でも、ヘルパライブラリ関数を呼ぶような形にコンパイルするようになっています。(これはgccであればアセンブラのリスティングをすればわかると思います。)

組み込みシステムということで、提供されているライブラリを使っていないということだと思いますが、ご質問にあるようなプログラムのコンパイルをする場合は、
(1)提供されているライブラリから必要なヘルパ関数を抜き出し、サブセットのライブラリを作る。
(2)使用しているヘルパライブラリのサブセットの互換ライブラリを自作する。
(3)ヘルパ関数を使わないようにプログラム側を修正する。
などのなかから、現在の事情にあった方法を選択するという形になると思います。
お礼コメント
onken

お礼率 82% (39/47)

早速の回答ありがとうございます。
この回答をヒントに何故ライブラリ参照が行われていないのかを調査した所、SAMPLEのコンパイルバッチファイルのリンカオプションコマンドの中に標準ライブラリ参照が含まれていない事がわかりました。この参照を追加した所OKとなりました。初心者にはなかなか難しいです。
ありがとうございました。
投稿日時 - 0000-00-00 00:00:00


このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ