質問

リンクステップ中に未定義の参照エラーがある場合でも、IHX(Intel Hex)ファイルを生成します。この動作は、MakeFileでSDCCを使用するときに問題を引き起こします.IHXファイルを設定した場合は、リンクの前の試みが失敗したことを知っているという良い方法はありません。

リンク中に未定義の参照があるときにIHX出力を抑制するようにSDCCに指示する方法はありますか?そうでなければ、最善の回避策は何ですか?(私はすでに1つより考えた)。

また、誰かが知っていれば、 SDCCがこのように設計されたのはなぜ SDCCに興味があります。

これは問題の一例です:

未定義の関数を呼び出すtest.cというファイルがあります。

void foo();
void main()
{
    foo();
}
.

test.cからtest.ihxを構築するためのシンプルなメイクファイルを持っています:

test.ihx: test.c
    sdcc test.c
.

はじめてtest.cをコンパイルしようとし、失敗しました:

C:\test>make
sdcc test.c

?ASlink-Warning-Undefined Global '_foo' referenced by module 'test'
make: *** [test.ihx] Error 1
.

IHXの依存関係ではないものを変更して問題を解決しようとし、再度コンパイルしてください。

C:\test>make
make: `test.ihx' is up to date.
.

SDCCはすでにIHXファイルを作成しているため、Makeはコンパイルしようとしません。

役に立ちましたか?

解決

SDCCについては何も知りませんので、出力を抑制できるかどうかについての質問に答えることができないか、SDCCがその方法で設計されたのかについてはごめんなさい。

仕事を考えることができます:構築成功後のIHXファイルの名前を変更し、新しい名前を作成ターゲットとして使用します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top