使用像gcc -march i486 -m32 -e Harimain -o bootpack.hrb bootpack.c hankaku.c naskfunc.o
這樣的GCC時,編譯器運行良好。但是,當我加-T link.ls
它告訴我:libgcc_s.so:添加符號時出錯:錯誤格式的文件
libgcc_s.so:Error添加符號:文件格式錯誤
我創建64位PC上的32位二進制文件。這是我的連接腳本:
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) }
}
操作系統是Ubuntu 16.04 64-bit,GCC版本是5.4.0。
問題是什麼,如何解決?
也許[我如何安裝同一個-dev軟件包的32位和64位版本?](https://askubuntu.com/q/254754)和[儘管多種設置,Ubuntu 16.04無法同時保留32位和64位庫安裝在操作系統](https://askubuntu.com/q/813125) – jww
sudo apt-get install glibc-devel.i686 –
你應該發佈這個答案。另請參閱Meta上的[接受自己的答案](https://stackoverflow.blog/2009/01/06/accept-your-own-answers/)。 – jww