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