0

デバッグ用に printf 出力をシリアル ポートに再ターゲットするために retarget.c を実装します。リンク コマンドが次のようになっている場合は、リンクして非常にうまく機能します。

arm-none-eabi-gcc --specs=nano.specs --specs=nosys.specs -g -mcpu=cortex-m4 -mthumb -fmessage-length=0 -std=c99 -fno-builtin -Wl,--gc-sections -Wl,-Map=main.map -T"$(LINKERFILE)" -o main.elf main.o retarget.o $(BUILDDIR)/libs.a -Wl,--start-group -lgcc -lc -lnosys -Wl,--end-group

しかしretarget.o、アーカイブファイル$(BUILDDIR)/libs.aにアーカイブすると、リンクコマンドは次のようになります。

arm-none-eabi-gcc --specs=nano.specs --specs=nosys.specs -g -mcpu=cortex-m4 -mthumb -fmessage-length=0 -std=c99 -fno-builtin -Wl,--gc-sections -Wl,-Map=main.map -T"$(LINKERFILE)" -o main.elf main.o $(BUILDDIR)/libs.a -Wl,--start-group -lgcc -lc -lnosys -Wl,--end-group

_write正常にリンクできたのですが、関数 printf がシリアルポートに何も出力せず、 retarget.cなどの自作バージョンの関数が最終的にコンパイルされたプログラムで使用されていないようです。

4

1 に答える 1