GCC -fPIC 플래그와의 연결이 감지되지 않음

GCC -fPIC 플래그와의 연결이 감지되지 않음

일부 파일을 연결하려고 합니다. 이것은 내 명령입니다:

gcc -T linker.ld -o Stack\ Berry.bin -ffreestanding -O2 -nostlib kernel.o boot.o -fPIC -lgcc

그러나 다음 오류가 발생합니다.

/usr/bin/ld: boot.o: relocation R_X86_64_32 against `.multiboot' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output

나는 이 -fPIC주장을 포함했는데, 내가 그것을 잘못된 위치에 넣은 것일까요? 이 플래그의 구문에 대해 아무것도 찾지 못했습니다. 감사해요!

답변1

가 포함된 elf 섹션이 boot.o있습니다 . 컴파일을 시도할 수 있지만 실패 합니다..multiboot-fPICboot.o-fPIC

바라보다https://www.gnu.org/software/grub/manual/multiboot/multiboot.html#OS-image-format제목을 위해.

반면에 부팅 가능한 객체를 생성하기 위해 -fPIC. "동적 로더"를 사용하더라도 부팅 중에는 동적 연결이 불가능합니다.

관련 정보