A ligação com o GCC não detecta o sinalizador -fPIC

0

Estou tentando vincular alguns arquivos. Aqui está o meu comando:

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

Como sempre, recebo este erro:

/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

Eu incluí o argumento -fPIC , acabei de colocá-lo no lugar errado? Eu não consegui encontrar nada para a sintaxe dessa bandeira. Obrigado!

    
por Milo Banks 13.11.2018 / 01:46

1 resposta

0

Seu boot.o tem uma seção .multiboot elf, que é incompatível com -fPIC . Você pode tentar compilar boot.o com -fPIC , mas isso deve falhar.

Veja o link para o cabeçalho.

Por outro lado, não faz sentido criar um objeto inicializável com -fPIC . Mesmo se houvesse um "carregador dinâmico", não poderia haver nada para vincular dinamicamente durante o processo de inicialização.

    
por 13.11.2018 / 03:11

Tags