Linux下的16位链接
题
当我使用命令“ nasm -f elf -l hello.lst hello.asm”时,我正在使用linux下的nasm assembler。它可以正常工作,但是当与gcc -o hello.o hello.o链接时,它会生成错误:
Hello.asm :(。text+0x4):重新定位截断为fit:r_386_16 files fit' .data'collect2:ld返回1退出状态
我了解到这是GCC和16位的问题
有解决方案吗?
解决方案
Linux甚至没有16位子系统 - 即使您有GCC可以链接它,您仍然无法执行它!你为什么不使用 .bits 32
?
其他提示
几年前,我面临着同样的情况。
处理它的两种方法是:
- 编写自己的16位友好链接器(至少需要解析。
- 使用基本符号(或符号)手动计算绝对地址(仍创建.REL部分,但可以删除)。但是,此方法非常容易发生。
我总是最终做2,但我可能应该花时间编写一个链接器(或修补GNU LD ...)。
不隶属于 StackOverflow