

Ubuntu 16.04, gcc 5.4.0 の環境でコンパイルしているのですが、エラーになってしまいます。

**実行コマンド:**

[code]

    gcc -T link.ls -march i486 -m32 -o haribote.hrb bootpack.c hankaku.c naskfunc.o -lc
    
[/code]

**エラーメッセージ:**

[code]

    libgcc_s.o:error adding symbol : file in wrong format
    
[/code]

なお、`-T link.ls` を外すとうまくコンパイルできます。

リンカスクリプトは以下の通りです。

[code]

    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) }
    
    }
    
[/code]


CC BY-SA 4.0
2017-07-08T06:44:08.033
36189
2023-09-03T10:06:25.797
2021-03-04T05:45:28.417
3060
24226
question
linux c ubuntu gcc
gccのコンパイルエラー: error adding symbol : file in wrong format


libgcc を入れたはずなのに `cannnot find -libgcc` とエラーが出たのであれば、シンボリックリンクが貼れていないかもしれません。

対応策が書いてあるブログを見つけたので参考になれば。

[makeするとライブラリが入っているのに /usr/lib/ld: cannot find
と怒られる問題](http://d.hatena.ne.jp/cou929_la/20080718/1216391301)


CC BY-SA 4.0
2017-07-10T11:57:51.137
36248
2020-09-03T00:39:05.050
2020-09-03T00:39:05.050
3060
24319
36189
answer