我尝试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);