Я пытаюсь создать плоский двоичный файл с 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);