GCC使用正确链接的数据部分创建平面二进制文件

时间:2014-11-21 15:48:10

标签: c gcc binary objcopy

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

0 个答案:

没有答案