質問: Ubuntu 16.04, gcc 5.4.0 の環境でコンパイルしているのですが、エラーになってしまいます。 **実行コマンド:** ``` gcc -T link.ls -march i486 -m32 -o haribote.hrb bootpack.c hankaku.c naskfunc.o -lc ``` **エラーメッセージ:** ``` libgcc_s.o:error adding symbol : file in wrong format ``` なお、`-T link.ls` を外すとうまくコンパイルできます。 リンカスクリプトは以下の通りです。 ``` OUTPUT_FORMAT("binary"); SECTIONS { .head 0x0 : { LONG(0x64 * 1024) /* 0 : stack+.data+heap の大きさ(4KBの倍数) */ LONG(0x69726148) /* 4 : シグネチャ "Hari" */ LONG(0) /* 8 : mmarea の大きさ(4KBの倍数) */ LONG(0x310000) /* 12 : スタック初期値&.data転送先 */ LONG(SIZEOF(.data)) /* 16 : .dataサイズ */ LONG(LOADADDR(.data)) /* 20 : .dataの初期値列のファイル位置 */ LONG(0xE9000000) /* 24 : 0xE9000000 */ LONG(main - 0x20) /* 28 : エントリアドレス - 0x20 */ LONG(0) /* 32 : heap領域(malloc領域)開始アドレス */ } .text : { *(.text) } .data 0x310000 : AT ( ADDR(.text) + SIZEOF(.text) ) { *(.data) *(.rodata*) *(.bss) } /DISCARD/ : { *(.eh_frame) } } ```
回答: libgcc を入れたはずなのに `cannnot find -libgcc` とエラーが出たのであれば、シンボリックリンクが貼れていないかもしれません。 対応策が書いてあるブログを見つけたので参考になれば。 makeするとライブラリが入っているのに /usr/lib/ld: cannot find と怒られる問題