Linux下16位链接
我在linux下使用NASM Assembler 当我使用命令“nasm -f elf -l hello.lst hello.asm”时 效果很好 但是当与 gcc“gcc -o hello hello.o”链接时 它会生成错误:
hello.asm:(.text+0x4): relocation truncated to fit: R_386_16 against `.data' collect2: ld 返回 1 退出状态
我了解到这是 gcc 和 16 位的一些问题,
有什么解决方案吗?
I'm using NASM Assembler under linux
when I use the command "nasm -f elf -l hello.lst hello.asm"
it works fine
but when linking with gcc "gcc -o hello hello.o"
it generates an error :
hello.asm:(.text+0x4): relocation truncated to fit: R_386_16 against `.data'
collect2: ld returned 1 exit status
I learned that this is some problem with gcc and 16-bit
any solutions ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
Linux 甚至没有 16 位子系统 - 即使你有 gcc 链接它,你仍然无法执行它!为什么不直接使用
.bits 32
呢?Linux doesn't even have a 16-bit subsystem - even if you got gcc to link it, you still couldn't execute it! Why don't you just use
.bits 32
?几年前我遇到过同样的情况,今年又遇到了同样的情况。
处理它的两种方法是:
我总是最终做 2,但我可能应该花时间编写一个链接器(或修补 GNU ld...)。
I faced the same situation a few years ago and again this year.
Two ways to deal with it are:
I always end up doing 2, but I should probably make time to write a linker (or patching GNU ld...).