私はARM926のためのベアメタルコードを構築しており、生成された出力を可能な限り厳密にする必要があります。私は、このリンカのフラグ置く私のMakefile
でC唯一のコードのための `__aeabi_unwind_cpp_pr1 'への未定義の参照
yocto/poky/build-idprint/tmp/work/idprint-poky-linux-gnueabi/idpr/1.0-r0/
recipe-sysroot/usr/lib/libc.a(raise.o):
(.ARM.exidx+0x0): undefined reference to `__aeabi_unwind_cpp_pr1'
:私のベストエフォートで
は、しかし、私はまだ、このエラーが表示さ
LD_OPT = -Wl,-gc-sections -Wl,-build-id=none -flto
LD_LINK = -static -nostartfiles -nostdlib -Wl,--start-group,-lgcc,-lc,--end-group
LDFLAGS = -T $(BINARY).ld -Xlinker -Map=$(BINARY).map $(LD_OPT)
とリンクコマンドを
$(LINK.cc) $(OBJS) $(LD_LINK) src/lib_dummies.o -o $(BINARY).elf
です
最後に私はできるだけシンプルなカスタムリンカースクリプトを持っています:
OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
OUTPUT_ARCH(arm)
ENTRY(fiq_main)
SECTIONS
{
. = 0x0;
.text : {
KEEP(*(.textEntry));
*(.text*)
*(.text .gnu.linkonce.t.*)
}
. = ALIGN(1024);
_bss_start = .;
.data : { *(.data) }
.bss : { *(.bss) }
_bss_end = .;
}
カスタムダミー__aeabi_unwind_cpp_pr1
を(libgccソースからインスピレーションを得て)自分のコードに追加しましたが、それは役に立ちませんでした。
私はウェブの周りにかなりの数のページについて読んだことがあるが、私のC
のみのプロジェクトにC++
機能をリンクしようとしlibgcc
である理由どれも私に説明していません。 さて、$(LINK.cc)
はarm-poky-linux-gnueabi-g++
と評価されますが、C++
の機能をlibgcc
にリンクしようとしても意味がありません。私がlibstdc++
をリンクしていれば意味があります。さらに、$(LD)は他の理由で失敗します(-lgcc
が見つかりません)。
私が見つけることができた最適化フラグがありません。
私のコードでは、未知のものを追加しないことが非常に重要です。私は整数の除算を使用する必要があるため すべてが
私は必要であれば、教えてください、私はそれらを追加しますしてください、簡単にするために最適化フラグを省略したが(未解決__aeabi_idiv
を...)のみを開始しました。
ご協力いただきますようお願い申し上げます。おかげさまで