1

我尝试gcc使用objcopy. 我的 C 代码如下所示:

char* str = "Hello world!";
printString(str,12);

当我创建我的二进制文件时

C:\MinGW\bin\gcc -c cfile.c -o cfile.o
C:\MinGW\bin\gcc -nodefaultlibs -nostdlib -o comfile.o afile.o cfile.o
C:\MinGW\bin\objcopy -O binary comfile.o kernel.bin

代码部分 ( .text) 链接正确,但数据部分 ( .rdata) 只是放在我的代码部分后面,没有与我的代码部分链接。如果我访问数据部分中的任何内容,它将从 0x0x401000 加载某些内容,而不是从正确的位置加载并崩溃。

有没有办法解决这个问题?

PS:工作C代码是:

char* str = "Hello world!"-0x401000;
printString(str,12);
4

0 回答 0