簡體   English   中英

linux下的16位鏈接

[英]16-bit linking under linux

當我使用命令“nasm -f elf -l hello.lst hello.asm”時我在linux下使用NASM Assembler它工作正常但是當與gcc“gcc -o hello hello.o”鏈接時它會產生一個錯誤:

hello.asm :(。text + 0x4):重定位被截斷以適合:R_386_16對`.data'colle2:ld返回1退出狀態

我了解到這是gcc和16位的一些問題

任何解決方案

Linux甚至沒有16位子系統 - 即使你有gcc鏈接它,你仍然無法執行它! 你為什么不用.bits 32

我幾年前和今年再次遇到同樣的情況。

處理它的兩種方法是:

  1. 編寫自己的16位友好鏈接器(至少需要解析.rel.text部分)。
  2. 使用基本符號(或符號)手動計算絕對地址(.rel部分仍然創建,但可以刪除)。 但是,這種方法非常容易出錯。

我總是最終做2,但我應該花時間寫一個鏈接器(或修補GNU ld ......)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM